Skip to content

Commit f6ff68d

Browse files
committed
Test that uploaded files match expectations for each analysis kind
1 parent 0e1ad53 commit f6ff68d

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,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

Comments
 (0)