Skip to content

Commit 804183c

Browse files
committed
Final simplification of result list testing helper functions
1 parent 32fe739 commit 804183c

File tree

1 file changed

+31
-24
lines changed

1 file changed

+31
-24
lines changed

cmd/resource_test.go

+31-24
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,20 @@ func NewResourceTestInfoBasic(inputFile string, format string, resourceType stri
7777
// -------------------------------------------
7878
// resource list test helper functions
7979
// -------------------------------------------
80-
81-
func innerTestResourceList(t *testing.T, testInfo *ResourceTestInfo) (outputBuffer bytes.Buffer, basicTestInfo string, err error) {
82-
getLogger().Tracef("TestInfo: %s", testInfo)
83-
80+
func innerBufferedTestResourceList(t *testing.T, testInfo *ResourceTestInfo, whereFilters []WhereFilter) (outputBuffer bytes.Buffer, err error) {
8481
// Declare an output outputBuffer/outputWriter to use used during tests
8582
var outputWriter = bufio.NewWriter(&outputBuffer)
8683
// ensure all data is written to buffer before further validation
8784
defer outputWriter.Flush()
8885

86+
err = ListResources(outputWriter, testInfo.Format, testInfo.ResourceType, whereFilters)
87+
return
88+
}
89+
90+
func innerTestResourceList(t *testing.T, testInfo *ResourceTestInfo) (outputBuffer bytes.Buffer, basicTestInfo string, err error) {
91+
getLogger().Tracef("TestInfo: %s", testInfo)
92+
93+
// Prepare WHERE filters from where clause
8994
var whereFilters []WhereFilter = nil
9095
if testInfo.WhereClause != "" {
9196
whereFilters, err = retrieveWhereFilters(testInfo.WhereClause)
@@ -96,11 +101,13 @@ func innerTestResourceList(t *testing.T, testInfo *ResourceTestInfo) (outputBuff
96101
}
97102
}
98103

99-
// Use a test input SBOM formatted in SPDX
104+
// The command looks for the input filename in global flags struct
100105
utils.GlobalFlags.InputFile = testInfo.InputFile
101-
err = ListResources(outputWriter, testInfo.Format, testInfo.ResourceType, whereFilters)
102106

103-
// Expected an error; does it match
107+
// invoke resource list command with a byte buffer
108+
outputBuffer, err = innerBufferedTestResourceList(t, testInfo, whereFilters)
109+
110+
// TEST: Expected error matches actual error
104111
if testInfo.ExpectedError != nil {
105112
// NOTE: err = nil will also fail if error was expected
106113
if !ErrorTypesMatch(err, testInfo.ExpectedError) {
@@ -110,22 +117,16 @@ func innerTestResourceList(t *testing.T, testInfo *ResourceTestInfo) (outputBuff
110117
return
111118
}
112119

113-
// Unexpected error
120+
// Unexpected error: return immediately/do not test output/results
114121
if err != nil {
115122
t.Errorf("test failed: %s: detail: %s ", testInfo, err.Error())
116123
}
117124

118-
return
119-
}
120-
121-
func innerTestResourceListResults(t *testing.T, testInfo *ResourceTestInfo) (outputBuffer bytes.Buffer, testDetails string, err error) {
122-
123-
outputBuffer, testDetails, err = innerTestResourceList(t, testInfo)
124-
125-
// Test buffer has ONLY correct results for test case
126-
if err == nil {
127-
outputResults := outputBuffer.String()
128-
outputLineCount := strings.Count(outputResults, "\n")
125+
// TEST: Output contains string(s)
126+
// TODO: Support []string
127+
var outputResults string
128+
if testInfo.ResultContains != "" {
129+
outputResults = outputBuffer.String()
129130
getLogger().Debugf("output: \"%s\"", outputResults)
130131

131132
if !strings.Contains(outputResults, testInfo.ResultContains) {
@@ -136,9 +137,15 @@ func innerTestResourceListResults(t *testing.T, testInfo *ResourceTestInfo) (out
136137
testInfo.WhereClause)
137138
return
138139
}
140+
}
139141

140-
if testInfo.ResultLineCount >= RTI_DEFAULT_LINE_COUNT &&
141-
outputLineCount != testInfo.ResultLineCount {
142+
// TEST: Line Count
143+
if testInfo.ResultLineCount != RTI_DEFAULT_LINE_COUNT {
144+
if outputResults == "" {
145+
outputResults = outputBuffer.String()
146+
}
147+
outputLineCount := strings.Count(outputResults, "\n")
148+
if outputLineCount != testInfo.ResultLineCount {
142149
err = getLogger().Errorf("output did not contain expected line count: %v/%v (expected/actual)", testInfo.ResultLineCount, outputLineCount)
143150
t.Errorf("%s: input file: `%s`, where clause: `%s`",
144151
err.Error(),
@@ -251,7 +258,7 @@ func TestResourceListTextCdx13WhereClauseAndResults1(t *testing.T) {
251258
TEST_OUTPUT_LINES,
252259
nil)
253260

254-
innerTestResourceListResults(t, rti)
261+
innerTestResourceList(t, rti)
255262
}
256263

257264
func TestResourceListTextCdx13WhereClauseAndResults2(t *testing.T) {
@@ -268,7 +275,7 @@ func TestResourceListTextCdx13WhereClauseAndResults2(t *testing.T) {
268275
TEST_OUTPUT_LINES,
269276
nil)
270277

271-
innerTestResourceListResults(t, rti)
278+
innerTestResourceList(t, rti)
272279
}
273280

274281
func TestResourceListTextCdx13WhereClauseAndResultsNone(t *testing.T) {
@@ -287,5 +294,5 @@ func TestResourceListTextCdx13WhereClauseAndResultsNone(t *testing.T) {
287294

288295
// THere are no services that meet the where filter criteria
289296
// check for warning message in output
290-
innerTestResourceListResults(t, rti)
297+
innerTestResourceList(t, rti)
291298
}

0 commit comments

Comments
 (0)