Skip to content

Commit 1e7e52a

Browse files
committed
Add tests where upload should get skipped
1 parent 383b86d commit 1e7e52a

File tree

1 file changed

+69
-10
lines changed

1 file changed

+69
-10
lines changed

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

Lines changed: 69 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,13 @@ async function testFailedSarifUpload(
627627
return result;
628628
}
629629

630+
const singleLanguageMatrix = JSON.stringify({
631+
language: "javascript",
632+
category: "/language:javascript",
633+
"build-mode": "none",
634+
runner: "ubuntu-latest",
635+
});
636+
630637
async function mockRiskAssessmentEnv(matrix: string) {
631638
process.env["GITHUB_JOB"] = "analyze";
632639
process.env["GITHUB_REPOSITORY"] = "github/codeql-action-fake-repository";
@@ -655,16 +662,9 @@ async function mockRiskAssessmentEnv(matrix: string) {
655662
}
656663

657664
test("tryUploadSarifIfRunFailed - uploads as artifact for risk assessments", async (t) => {
658-
const matrix = JSON.stringify({
659-
language: "javascript",
660-
category: "/language:javascript",
661-
"build-mode": "none",
662-
runner: "ubuntu-latest",
663-
});
664-
665-
const [uploadArtifact] = await mockRiskAssessmentEnv(matrix);
666-
667665
const logger = new RecordingLogger();
666+
const [uploadArtifact] = await mockRiskAssessmentEnv(singleLanguageMatrix);
667+
668668
const config = createTestConfig({
669669
analysisKinds: [AnalysisKind.RiskAssessment],
670670
codeQLCmd: "codeql-for-testing",
@@ -680,7 +680,7 @@ test("tryUploadSarifIfRunFailed - uploads as artifact for risk assessments", asy
680680
);
681681

682682
const expectedName = debugArtifacts.sanitizeArtifactName(
683-
`sarif-artifact-${debugArtifacts.getArtifactSuffix(matrix)}`,
683+
`sarif-artifact-${debugArtifacts.getArtifactSuffix(singleLanguageMatrix)}`,
684684
);
685685
t.is(result.upload_failed_run_skipped_because, undefined);
686686
t.is(result.upload_failed_run_error, undefined);
@@ -693,3 +693,62 @@ test("tryUploadSarifIfRunFailed - uploads as artifact for risk assessments", asy
693693
),
694694
);
695695
});
696+
697+
const skippedUploadTest = test.macro({
698+
exec: async (
699+
t: ExecutionContext<unknown>,
700+
config: Partial<configUtils.Config>,
701+
expectedSkippedReason: string,
702+
) => {
703+
const logger = new RecordingLogger();
704+
const [uploadArtifact] = await mockRiskAssessmentEnv(singleLanguageMatrix);
705+
const features = createFeatures([]);
706+
707+
const result = await initActionPostHelper.tryUploadSarifIfRunFailed(
708+
createTestConfig(config),
709+
parseRepositoryNwo("github/codeql-action-fake-repository"),
710+
features,
711+
logger,
712+
);
713+
714+
t.is(result.upload_failed_run_skipped_because, expectedSkippedReason);
715+
t.assert(uploadArtifact.notCalled);
716+
},
717+
718+
title: (providedTitle: string = "") =>
719+
`tryUploadSarifIfRunFailed - skips upload ${providedTitle}`,
720+
});
721+
722+
test(
723+
"without CodeQL command",
724+
skippedUploadTest,
725+
// No codeQLCmd
726+
{
727+
analysisKinds: [AnalysisKind.RiskAssessment],
728+
languages: ["javascript"],
729+
} satisfies Partial<configUtils.Config>,
730+
"CodeQL command not found",
731+
);
732+
733+
test(
734+
"if no language is configured",
735+
skippedUploadTest,
736+
// No explicit language configuration
737+
{
738+
analysisKinds: [AnalysisKind.RiskAssessment],
739+
codeQLCmd: "codeql-for-testing",
740+
} satisfies Partial<configUtils.Config>,
741+
"Unexpectedly, the configuration is not for a single language.",
742+
);
743+
744+
test(
745+
"if multiple languages is configured",
746+
skippedUploadTest,
747+
// Multiple explicit languages configured
748+
{
749+
analysisKinds: [AnalysisKind.RiskAssessment],
750+
codeQLCmd: "codeql-for-testing",
751+
languages: ["javascript", "python"],
752+
} satisfies Partial<configUtils.Config>,
753+
"Unexpectedly, the configuration is not for a single language.",
754+
);

0 commit comments

Comments
 (0)