@@ -14,7 +14,7 @@ import { getRunnerLogger } from "./logging";
1414import { createFeatures , setupTests } from "./testing-utils" ;
1515import { UploadResult } from "./upload-lib" ;
1616import * as uploadLib from "./upload-lib" ;
17- import { findAndUpload , uploadSarif , UploadSarifResults } from "./upload-sarif" ;
17+ import { findAndUpload , uploadSarif } from "./upload-sarif" ;
1818import * as util from "./util" ;
1919
2020setupTests ( test ) ;
@@ -85,17 +85,25 @@ test(
8585 } ,
8686) ;
8787
88+ interface UploadSarifExpectedResult {
89+ uploadResult ?: UploadResult ;
90+ expectedFiles ?: string [ ] ;
91+ }
92+
8893const uploadSarifMacro = test . macro ( {
8994 exec : async (
9095 t : ExecutionContext < unknown > ,
9196 sarifFiles : string [ ] ,
9297 sarifPath : ( tempDir : string ) => string = ( tempDir ) => tempDir ,
93- expectedResult : UploadSarifResults ,
98+ expectedResult : Partial < Record < AnalysisKind , UploadSarifExpectedResult > > ,
9499 ) => {
95100 await util . withTmpDir ( async ( tempDir ) => {
96101 const logger = getRunnerLogger ( true ) ;
97102 const testPath = sarifPath ( tempDir ) ;
98103 const features = createFeatures ( [ ] ) ;
104+
105+ const toFullPath = ( filename : string ) => path . join ( tempDir , filename ) ;
106+
99107 const uploadSpecifiedFiles = sinon . stub (
100108 uploadLib ,
101109 "uploadSpecifiedFiles" ,
@@ -113,17 +121,39 @@ const uploadSarifMacro = test.macro({
113121 ? CodeScanning
114122 : CodeQuality ,
115123 )
116- . resolves ( expectedResult [ analysisKind as AnalysisKind ] ) ;
124+ . resolves ( expectedResult [ analysisKind as AnalysisKind ] ?. uploadResult ) ;
117125 }
118126
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 , "" ) ;
121130 }
122131
123132 const stats = fs . statSync ( testPath ) ;
124133 const actual = await uploadSarif ( logger , features , testPath , stats , "" ) ;
125134
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+ }
127157 } ) ;
128158 } ,
129159 title : ( providedTitle = "" ) => `uploadSarif - ${ providedTitle } ` ,
@@ -136,8 +166,10 @@ test(
136166 ( tempDir ) => path . join ( tempDir , "test.sarif" ) ,
137167 {
138168 "code-scanning" : {
139- statusReport : { } ,
140- sarifID : "code-scanning-sarif" ,
169+ uploadResult : {
170+ statusReport : { } ,
171+ sarifID : "code-scanning-sarif" ,
172+ } ,
141173 } ,
142174 } ,
143175) ;
@@ -149,8 +181,10 @@ test(
149181 ( tempDir ) => path . join ( tempDir , "test.json" ) ,
150182 {
151183 "code-scanning" : {
152- statusReport : { } ,
153- sarifID : "code-scanning-sarif" ,
184+ uploadResult : {
185+ statusReport : { } ,
186+ sarifID : "code-scanning-sarif" ,
187+ } ,
154188 } ,
155189 } ,
156190) ;
@@ -162,8 +196,11 @@ test(
162196 undefined ,
163197 {
164198 "code-scanning" : {
165- statusReport : { } ,
166- sarifID : "code-scanning-sarif" ,
199+ uploadResult : {
200+ statusReport : { } ,
201+ sarifID : "code-scanning-sarif" ,
202+ } ,
203+ expectedFiles : [ "test.sarif" ] ,
167204 } ,
168205 } ,
169206) ;
@@ -175,8 +212,10 @@ test(
175212 ( tempDir ) => path . join ( tempDir , "test.quality.sarif" ) ,
176213 {
177214 "code-quality" : {
178- statusReport : { } ,
179- sarifID : "code-quality-sarif" ,
215+ uploadResult : {
216+ statusReport : { } ,
217+ sarifID : "code-quality-sarif" ,
218+ } ,
180219 } ,
181220 } ,
182221) ;
@@ -188,12 +227,18 @@ test(
188227 undefined ,
189228 {
190229 "code-scanning" : {
191- statusReport : { } ,
192- sarifID : "code-scanning-sarif" ,
230+ uploadResult : {
231+ statusReport : { } ,
232+ sarifID : "code-scanning-sarif" ,
233+ } ,
234+ expectedFiles : [ "test.sarif" ] ,
193235 } ,
194236 "code-quality" : {
195- statusReport : { } ,
196- sarifID : "code-quality-sarif" ,
237+ uploadResult : {
238+ statusReport : { } ,
239+ sarifID : "code-quality-sarif" ,
240+ } ,
241+ expectedFiles : [ "test.quality.sarif" ] ,
197242 } ,
198243 } ,
199244) ;
0 commit comments