@@ -14,7 +14,7 @@ import { getRunnerLogger } from "./logging";
14
14
import { createFeatures , setupTests } from "./testing-utils" ;
15
15
import { UploadResult } from "./upload-lib" ;
16
16
import * as uploadLib from "./upload-lib" ;
17
- import { findAndUpload , uploadSarif , UploadSarifResults } from "./upload-sarif" ;
17
+ import { findAndUpload , uploadSarif } from "./upload-sarif" ;
18
18
import * as util from "./util" ;
19
19
20
20
setupTests ( test ) ;
@@ -85,17 +85,25 @@ test(
85
85
} ,
86
86
) ;
87
87
88
+ interface UploadSarifExpectedResult {
89
+ uploadResult ?: UploadResult ;
90
+ expectedFiles ?: string [ ] ;
91
+ }
92
+
88
93
const uploadSarifMacro = test . macro ( {
89
94
exec : async (
90
95
t : ExecutionContext < unknown > ,
91
96
sarifFiles : string [ ] ,
92
97
sarifPath : ( tempDir : string ) => string = ( tempDir ) => tempDir ,
93
- expectedResult : UploadSarifResults ,
98
+ expectedResult : Partial < Record < AnalysisKind , UploadSarifExpectedResult > > ,
94
99
) => {
95
100
await util . withTmpDir ( async ( tempDir ) => {
96
101
const logger = getRunnerLogger ( true ) ;
97
102
const testPath = sarifPath ( tempDir ) ;
98
103
const features = createFeatures ( [ ] ) ;
104
+
105
+ const toFullPath = ( filename : string ) => path . join ( tempDir , filename ) ;
106
+
99
107
const uploadSpecifiedFiles = sinon . stub (
100
108
uploadLib ,
101
109
"uploadSpecifiedFiles" ,
@@ -113,17 +121,39 @@ const uploadSarifMacro = test.macro({
113
121
? CodeScanning
114
122
: CodeQuality ,
115
123
)
116
- . resolves ( expectedResult [ analysisKind as AnalysisKind ] ) ;
124
+ . resolves ( expectedResult [ analysisKind as AnalysisKind ] ?. uploadResult ) ;
117
125
}
118
126
119
- for ( const sarifFile of sarifFiles ) {
120
- fs . writeFileSync ( path . join ( tempDir , sarifFile ) , "" ) ;
127
+ const fullSarifPaths = sarifFiles . map ( toFullPath ) ;
128
+ for ( const sarifFile of fullSarifPaths ) {
129
+ fs . writeFileSync ( sarifFile , "" ) ;
121
130
}
122
131
123
132
const stats = fs . statSync ( testPath ) ;
124
133
const actual = await uploadSarif ( logger , features , testPath , stats , "" ) ;
125
134
126
- t . deepEqual ( actual , expectedResult ) ;
135
+ for ( const analysisKind of Object . values ( AnalysisKind ) ) {
136
+ const analyisKindResult = expectedResult [ analysisKind ] ;
137
+ if ( analyisKindResult ) {
138
+ t . deepEqual ( actual [ analysisKind ] , analyisKindResult . uploadResult ) ;
139
+
140
+ t . assert (
141
+ uploadSpecifiedFiles . calledWith (
142
+ analyisKindResult . expectedFiles ?. map ( toFullPath ) ??
143
+ fullSarifPaths ,
144
+ sinon . match . any ,
145
+ sinon . match . any ,
146
+ features ,
147
+ logger ,
148
+ analysisKind === AnalysisKind . CodeScanning
149
+ ? CodeScanning
150
+ : CodeQuality ,
151
+ ) ,
152
+ ) ;
153
+ } else {
154
+ t . is ( actual [ analysisKind ] , undefined ) ;
155
+ }
156
+ }
127
157
} ) ;
128
158
} ,
129
159
title : ( providedTitle = "" ) => `uploadSarif - ${ providedTitle } ` ,
@@ -136,8 +166,10 @@ test(
136
166
( tempDir ) => path . join ( tempDir , "test.sarif" ) ,
137
167
{
138
168
"code-scanning" : {
139
- statusReport : { } ,
140
- sarifID : "code-scanning-sarif" ,
169
+ uploadResult : {
170
+ statusReport : { } ,
171
+ sarifID : "code-scanning-sarif" ,
172
+ } ,
141
173
} ,
142
174
} ,
143
175
) ;
@@ -149,8 +181,10 @@ test(
149
181
( tempDir ) => path . join ( tempDir , "test.json" ) ,
150
182
{
151
183
"code-scanning" : {
152
- statusReport : { } ,
153
- sarifID : "code-scanning-sarif" ,
184
+ uploadResult : {
185
+ statusReport : { } ,
186
+ sarifID : "code-scanning-sarif" ,
187
+ } ,
154
188
} ,
155
189
} ,
156
190
) ;
@@ -162,8 +196,11 @@ test(
162
196
undefined ,
163
197
{
164
198
"code-scanning" : {
165
- statusReport : { } ,
166
- sarifID : "code-scanning-sarif" ,
199
+ uploadResult : {
200
+ statusReport : { } ,
201
+ sarifID : "code-scanning-sarif" ,
202
+ } ,
203
+ expectedFiles : [ "test.sarif" ] ,
167
204
} ,
168
205
} ,
169
206
) ;
@@ -175,8 +212,10 @@ test(
175
212
( tempDir ) => path . join ( tempDir , "test.quality.sarif" ) ,
176
213
{
177
214
"code-quality" : {
178
- statusReport : { } ,
179
- sarifID : "code-quality-sarif" ,
215
+ uploadResult : {
216
+ statusReport : { } ,
217
+ sarifID : "code-quality-sarif" ,
218
+ } ,
180
219
} ,
181
220
} ,
182
221
) ;
@@ -188,12 +227,18 @@ test(
188
227
undefined ,
189
228
{
190
229
"code-scanning" : {
191
- statusReport : { } ,
192
- sarifID : "code-scanning-sarif" ,
230
+ uploadResult : {
231
+ statusReport : { } ,
232
+ sarifID : "code-scanning-sarif" ,
233
+ } ,
234
+ expectedFiles : [ "test.sarif" ] ,
193
235
} ,
194
236
"code-quality" : {
195
- statusReport : { } ,
196
- sarifID : "code-quality-sarif" ,
237
+ uploadResult : {
238
+ statusReport : { } ,
239
+ sarifID : "code-quality-sarif" ,
240
+ } ,
241
+ expectedFiles : [ "test.quality.sarif" ] ,
197
242
} ,
198
243
} ,
199
244
) ;
0 commit comments