@@ -77,15 +77,20 @@ func NewResourceTestInfoBasic(inputFile string, format string, resourceType stri
77
77
// -------------------------------------------
78
78
// resource list test helper functions
79
79
// -------------------------------------------
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 ) {
84
81
// Declare an output outputBuffer/outputWriter to use used during tests
85
82
var outputWriter = bufio .NewWriter (& outputBuffer )
86
83
// ensure all data is written to buffer before further validation
87
84
defer outputWriter .Flush ()
88
85
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
89
94
var whereFilters []WhereFilter = nil
90
95
if testInfo .WhereClause != "" {
91
96
whereFilters , err = retrieveWhereFilters (testInfo .WhereClause )
@@ -96,11 +101,13 @@ func innerTestResourceList(t *testing.T, testInfo *ResourceTestInfo) (outputBuff
96
101
}
97
102
}
98
103
99
- // Use a test input SBOM formatted in SPDX
104
+ // The command looks for the input filename in global flags struct
100
105
utils .GlobalFlags .InputFile = testInfo .InputFile
101
- err = ListResources (outputWriter , testInfo .Format , testInfo .ResourceType , whereFilters )
102
106
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
104
111
if testInfo .ExpectedError != nil {
105
112
// NOTE: err = nil will also fail if error was expected
106
113
if ! ErrorTypesMatch (err , testInfo .ExpectedError ) {
@@ -110,22 +117,16 @@ func innerTestResourceList(t *testing.T, testInfo *ResourceTestInfo) (outputBuff
110
117
return
111
118
}
112
119
113
- // Unexpected error
120
+ // Unexpected error: return immediately/do not test output/results
114
121
if err != nil {
115
122
t .Errorf ("test failed: %s: detail: %s " , testInfo , err .Error ())
116
123
}
117
124
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 ()
129
130
getLogger ().Debugf ("output: \" %s\" " , outputResults )
130
131
131
132
if ! strings .Contains (outputResults , testInfo .ResultContains ) {
@@ -136,9 +137,15 @@ func innerTestResourceListResults(t *testing.T, testInfo *ResourceTestInfo) (out
136
137
testInfo .WhereClause )
137
138
return
138
139
}
140
+ }
139
141
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 {
142
149
err = getLogger ().Errorf ("output did not contain expected line count: %v/%v (expected/actual)" , testInfo .ResultLineCount , outputLineCount )
143
150
t .Errorf ("%s: input file: `%s`, where clause: `%s`" ,
144
151
err .Error (),
@@ -251,7 +258,7 @@ func TestResourceListTextCdx13WhereClauseAndResults1(t *testing.T) {
251
258
TEST_OUTPUT_LINES ,
252
259
nil )
253
260
254
- innerTestResourceListResults (t , rti )
261
+ innerTestResourceList (t , rti )
255
262
}
256
263
257
264
func TestResourceListTextCdx13WhereClauseAndResults2 (t * testing.T ) {
@@ -268,7 +275,7 @@ func TestResourceListTextCdx13WhereClauseAndResults2(t *testing.T) {
268
275
TEST_OUTPUT_LINES ,
269
276
nil )
270
277
271
- innerTestResourceListResults (t , rti )
278
+ innerTestResourceList (t , rti )
272
279
}
273
280
274
281
func TestResourceListTextCdx13WhereClauseAndResultsNone (t * testing.T ) {
@@ -287,5 +294,5 @@ func TestResourceListTextCdx13WhereClauseAndResultsNone(t *testing.T) {
287
294
288
295
// THere are no services that meet the where filter criteria
289
296
// check for warning message in output
290
- innerTestResourceListResults (t , rti )
297
+ innerTestResourceList (t , rti )
291
298
}
0 commit comments