@@ -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,16 +121,38 @@ 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 actual = await uploadSarif ( logger , features , "" , testPath ) ;
124133
125- t . deepEqual ( actual , expectedResult ) ;
134+ for ( const analysisKind of Object . values ( AnalysisKind ) ) {
135+ const analyisKindResult = expectedResult [ analysisKind ] ;
136+ if ( analyisKindResult ) {
137+ t . deepEqual ( actual [ analysisKind ] , analyisKindResult . uploadResult ) ;
138+
139+ t . assert (
140+ uploadSpecifiedFiles . calledWith (
141+ analyisKindResult . expectedFiles ?. map ( toFullPath ) ??
142+ fullSarifPaths ,
143+ sinon . match . any ,
144+ sinon . match . any ,
145+ features ,
146+ logger ,
147+ analysisKind === AnalysisKind . CodeScanning
148+ ? CodeScanning
149+ : CodeQuality ,
150+ ) ,
151+ ) ;
152+ } else {
153+ t . is ( actual [ analysisKind ] , undefined ) ;
154+ }
155+ }
126156 } ) ;
127157 } ,
128158 title : ( providedTitle = "" ) => `uploadSarif - ${ providedTitle } ` ,
@@ -135,8 +165,10 @@ test(
135165 ( tempDir ) => path . join ( tempDir , "test.sarif" ) ,
136166 {
137167 "code-scanning" : {
138- statusReport : { } ,
139- sarifID : "code-scanning-sarif" ,
168+ uploadResult : {
169+ statusReport : { } ,
170+ sarifID : "code-scanning-sarif" ,
171+ } ,
140172 } ,
141173 } ,
142174) ;
@@ -148,8 +180,10 @@ test(
148180 ( tempDir ) => path . join ( tempDir , "test.json" ) ,
149181 {
150182 "code-scanning" : {
151- statusReport : { } ,
152- sarifID : "code-scanning-sarif" ,
183+ uploadResult : {
184+ statusReport : { } ,
185+ sarifID : "code-scanning-sarif" ,
186+ } ,
153187 } ,
154188 } ,
155189) ;
@@ -161,8 +195,11 @@ test(
161195 undefined ,
162196 {
163197 "code-scanning" : {
164- statusReport : { } ,
165- sarifID : "code-scanning-sarif" ,
198+ uploadResult : {
199+ statusReport : { } ,
200+ sarifID : "code-scanning-sarif" ,
201+ } ,
202+ expectedFiles : [ "test.sarif" ] ,
166203 } ,
167204 } ,
168205) ;
@@ -174,8 +211,10 @@ test(
174211 ( tempDir ) => path . join ( tempDir , "test.quality.sarif" ) ,
175212 {
176213 "code-quality" : {
177- statusReport : { } ,
178- sarifID : "code-quality-sarif" ,
214+ uploadResult : {
215+ statusReport : { } ,
216+ sarifID : "code-quality-sarif" ,
217+ } ,
179218 } ,
180219 } ,
181220) ;
@@ -187,12 +226,18 @@ test(
187226 undefined ,
188227 {
189228 "code-scanning" : {
190- statusReport : { } ,
191- sarifID : "code-scanning-sarif" ,
229+ uploadResult : {
230+ statusReport : { } ,
231+ sarifID : "code-scanning-sarif" ,
232+ } ,
233+ expectedFiles : [ "test.sarif" ] ,
192234 } ,
193235 "code-quality" : {
194- statusReport : { } ,
195- sarifID : "code-quality-sarif" ,
236+ uploadResult : {
237+ statusReport : { } ,
238+ sarifID : "code-quality-sarif" ,
239+ } ,
240+ expectedFiles : [ "test.quality.sarif" ] ,
196241 } ,
197242 } ,
198243) ;
0 commit comments