Skip to content

Commit 003044e

Browse files
committed
Add test
1 parent 5b9d1f4 commit 003044e

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

src/init-action-post-helper.test.ts

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
import * as core from "@actions/core";
12
import test, { ExecutionContext } from "ava";
23
import * as sinon from "sinon";
34

45
import * as actionsUtil from "./actions-util";
56
import { AnalysisKind } from "./analyses";
7+
import * as apiClient from "./api-client";
68
import * as codeql from "./codeql";
79
import * as configUtils from "./config-utils";
10+
import * as debugArtifacts from "./debug-artifacts";
811
import { EnvVar } from "./environment";
912
import { Feature } from "./feature-flags";
1013
import * as initActionPostHelper from "./init-action-post-helper";
@@ -16,6 +19,7 @@ import {
1619
createFeatures,
1720
createTestConfig,
1821
makeVersionInfo,
22+
RecordingLogger,
1923
setupTests,
2024
} from "./testing-utils";
2125
import * as uploadLib from "./upload-lib";
@@ -622,3 +626,61 @@ async function testFailedSarifUpload(
622626
}
623627
return result;
624628
}
629+
630+
test("tryUploadSarifIfRunFailed - uploads as artifact for risk assessments", async (t) => {
631+
process.env["GITHUB_JOB"] = "analyze";
632+
process.env["GITHUB_REPOSITORY"] = "github/codeql-action-fake-repository";
633+
process.env["GITHUB_WORKSPACE"] =
634+
"/home/runner/work/codeql-action-fake-repository/codeql-action-fake-repository";
635+
636+
const logger = new RecordingLogger();
637+
const config = createTestConfig({
638+
analysisKinds: [AnalysisKind.RiskAssessment],
639+
codeQLCmd: "codeql-for-testing",
640+
languages: ["javascript"],
641+
});
642+
const features = createFeatures([]);
643+
644+
sinon
645+
.stub(apiClient, "getGitHubVersion")
646+
.resolves({ type: util.GitHubVariant.GHES, version: "3.0.0" });
647+
648+
const uploadArtifact = sinon.stub().resolves();
649+
const artifactClient = { uploadArtifact };
650+
sinon
651+
.stub(debugArtifacts, "getArtifactUploaderClient")
652+
.value(() => artifactClient);
653+
654+
const matrix = JSON.stringify({
655+
language: "javascript",
656+
category: "/language:javascript",
657+
"build-mode": "none",
658+
runner: "ubuntu-latest",
659+
});
660+
sinon.stub(core, "getInput").withArgs("matrix").returns(matrix);
661+
662+
const codeqlObject = await codeql.getCodeQLForTesting();
663+
sinon.stub(codeqlObject, "databaseExportDiagnostics").resolves();
664+
sinon.stub(codeqlObject, "diagnosticsExport").resolves();
665+
666+
sinon.stub(codeql, "getCodeQL").resolves(codeqlObject);
667+
668+
const result = await initActionPostHelper.tryUploadSarifIfRunFailed(
669+
config,
670+
parseRepositoryNwo("github/codeql-action-fake-repository"),
671+
features,
672+
logger,
673+
);
674+
675+
const expectedName = `sarif-artifact-${debugArtifacts.getArtifactSuffix(matrix)}`;
676+
t.is(result.upload_failed_run_skipped_because, undefined);
677+
t.is(result.upload_failed_run_error, undefined);
678+
t.is(result.sarifID, expectedName);
679+
t.assert(
680+
uploadArtifact.calledOnceWith(
681+
expectedName,
682+
sinon.match.array,
683+
sinon.match.string,
684+
),
685+
);
686+
});

0 commit comments

Comments
 (0)