Skip to content

Commit 5b3f0de

Browse files
committed
Test that uploaded files match expectations for each analysis kind
1 parent 6e0b087 commit 5b3f0de

File tree

1 file changed

+63
-18
lines changed

1 file changed

+63
-18
lines changed

src/upload-sarif.test.ts

Lines changed: 63 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { getRunnerLogger } from "./logging";
1414
import { createFeatures, setupTests } from "./testing-utils";
1515
import { UploadResult } from "./upload-lib";
1616
import * as uploadLib from "./upload-lib";
17-
import { findAndUpload, uploadSarif, UploadSarifResults } from "./upload-sarif";
17+
import { findAndUpload, uploadSarif } from "./upload-sarif";
1818
import * as util from "./util";
1919

2020
setupTests(test);
@@ -85,17 +85,25 @@ test(
8585
},
8686
);
8787

88+
interface UploadSarifExpectedResult {
89+
uploadResult?: UploadResult;
90+
expectedFiles?: string[];
91+
}
92+
8893
const 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

Comments
 (0)