mirror of
https://github.com/github/codeql-action.git
synced 2026-04-07 20:52:32 +00:00
Test that uploaded files match expectations for each analysis kind
This commit is contained in:
@@ -14,7 +14,7 @@ import { getRunnerLogger } from "./logging";
|
||||
import { createFeatures, setupTests } from "./testing-utils";
|
||||
import { UploadResult } from "./upload-lib";
|
||||
import * as uploadLib from "./upload-lib";
|
||||
import { findAndUpload, uploadSarif, UploadSarifResults } from "./upload-sarif";
|
||||
import { findAndUpload, uploadSarif } from "./upload-sarif";
|
||||
import * as util from "./util";
|
||||
|
||||
setupTests(test);
|
||||
@@ -85,17 +85,25 @@ test(
|
||||
},
|
||||
);
|
||||
|
||||
interface UploadSarifExpectedResult {
|
||||
uploadResult?: UploadResult;
|
||||
expectedFiles?: string[];
|
||||
}
|
||||
|
||||
const uploadSarifMacro = test.macro({
|
||||
exec: async (
|
||||
t: ExecutionContext<unknown>,
|
||||
sarifFiles: string[],
|
||||
sarifPath: (tempDir: string) => string = (tempDir) => tempDir,
|
||||
expectedResult: UploadSarifResults,
|
||||
expectedResult: Partial<Record<AnalysisKind, UploadSarifExpectedResult>>,
|
||||
) => {
|
||||
await util.withTmpDir(async (tempDir) => {
|
||||
const logger = getRunnerLogger(true);
|
||||
const testPath = sarifPath(tempDir);
|
||||
const features = createFeatures([]);
|
||||
|
||||
const toFullPath = (filename: string) => path.join(tempDir, filename);
|
||||
|
||||
const uploadSpecifiedFiles = sinon.stub(
|
||||
uploadLib,
|
||||
"uploadSpecifiedFiles",
|
||||
@@ -113,16 +121,38 @@ const uploadSarifMacro = test.macro({
|
||||
? CodeScanning
|
||||
: CodeQuality,
|
||||
)
|
||||
.resolves(expectedResult[analysisKind as AnalysisKind]);
|
||||
.resolves(expectedResult[analysisKind as AnalysisKind]?.uploadResult);
|
||||
}
|
||||
|
||||
for (const sarifFile of sarifFiles) {
|
||||
fs.writeFileSync(path.join(tempDir, sarifFile), "");
|
||||
const fullSarifPaths = sarifFiles.map(toFullPath);
|
||||
for (const sarifFile of fullSarifPaths) {
|
||||
fs.writeFileSync(sarifFile, "");
|
||||
}
|
||||
|
||||
const actual = await uploadSarif(logger, features, "", testPath);
|
||||
|
||||
t.deepEqual(actual, expectedResult);
|
||||
for (const analysisKind of Object.values(AnalysisKind)) {
|
||||
const analyisKindResult = expectedResult[analysisKind];
|
||||
if (analyisKindResult) {
|
||||
t.deepEqual(actual[analysisKind], analyisKindResult.uploadResult);
|
||||
|
||||
t.assert(
|
||||
uploadSpecifiedFiles.calledWith(
|
||||
analyisKindResult.expectedFiles?.map(toFullPath) ??
|
||||
fullSarifPaths,
|
||||
sinon.match.any,
|
||||
sinon.match.any,
|
||||
features,
|
||||
logger,
|
||||
analysisKind === AnalysisKind.CodeScanning
|
||||
? CodeScanning
|
||||
: CodeQuality,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
t.is(actual[analysisKind], undefined);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
title: (providedTitle = "") => `uploadSarif - ${providedTitle}`,
|
||||
@@ -135,8 +165,10 @@ test(
|
||||
(tempDir) => path.join(tempDir, "test.sarif"),
|
||||
{
|
||||
"code-scanning": {
|
||||
statusReport: {},
|
||||
sarifID: "code-scanning-sarif",
|
||||
uploadResult: {
|
||||
statusReport: {},
|
||||
sarifID: "code-scanning-sarif",
|
||||
},
|
||||
},
|
||||
},
|
||||
);
|
||||
@@ -148,8 +180,10 @@ test(
|
||||
(tempDir) => path.join(tempDir, "test.json"),
|
||||
{
|
||||
"code-scanning": {
|
||||
statusReport: {},
|
||||
sarifID: "code-scanning-sarif",
|
||||
uploadResult: {
|
||||
statusReport: {},
|
||||
sarifID: "code-scanning-sarif",
|
||||
},
|
||||
},
|
||||
},
|
||||
);
|
||||
@@ -161,8 +195,11 @@ test(
|
||||
undefined,
|
||||
{
|
||||
"code-scanning": {
|
||||
statusReport: {},
|
||||
sarifID: "code-scanning-sarif",
|
||||
uploadResult: {
|
||||
statusReport: {},
|
||||
sarifID: "code-scanning-sarif",
|
||||
},
|
||||
expectedFiles: ["test.sarif"],
|
||||
},
|
||||
},
|
||||
);
|
||||
@@ -174,8 +211,10 @@ test(
|
||||
(tempDir) => path.join(tempDir, "test.quality.sarif"),
|
||||
{
|
||||
"code-quality": {
|
||||
statusReport: {},
|
||||
sarifID: "code-quality-sarif",
|
||||
uploadResult: {
|
||||
statusReport: {},
|
||||
sarifID: "code-quality-sarif",
|
||||
},
|
||||
},
|
||||
},
|
||||
);
|
||||
@@ -187,12 +226,18 @@ test(
|
||||
undefined,
|
||||
{
|
||||
"code-scanning": {
|
||||
statusReport: {},
|
||||
sarifID: "code-scanning-sarif",
|
||||
uploadResult: {
|
||||
statusReport: {},
|
||||
sarifID: "code-scanning-sarif",
|
||||
},
|
||||
expectedFiles: ["test.sarif"],
|
||||
},
|
||||
"code-quality": {
|
||||
statusReport: {},
|
||||
sarifID: "code-quality-sarif",
|
||||
uploadResult: {
|
||||
statusReport: {},
|
||||
sarifID: "code-quality-sarif",
|
||||
},
|
||||
expectedFiles: ["test.quality.sarif"],
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user