mirror of
https://github.com/github/codeql-action.git
synced 2025-12-26 17:20:10 +08:00
This will help us distinguish steady-state runs in default setup mode from advanced setup runs and default setup validation/onboarding runs.
189 lines
5.7 KiB
TypeScript
189 lines
5.7 KiB
TypeScript
import test from "ava";
|
|
import * as sinon from "sinon";
|
|
|
|
import * as actionsUtil from "./actions-util";
|
|
import { EnvVar } from "./environment";
|
|
import { Language } from "./languages";
|
|
import { getRunnerLogger } from "./logging";
|
|
import { ActionName, createStatusReportBase } from "./status-report";
|
|
import {
|
|
setupTests,
|
|
setupActionsVars,
|
|
createTestConfig,
|
|
} from "./testing-utils";
|
|
import { BuildMode, withTmpDir } from "./util";
|
|
|
|
setupTests(test);
|
|
|
|
function setupEnvironmentAndStub(tmpDir: string) {
|
|
setupActionsVars(tmpDir, tmpDir);
|
|
|
|
process.env["CODEQL_ACTION_ANALYSIS_KEY"] = "analysis-key";
|
|
process.env["GITHUB_EVENT_NAME"] = "dynamic";
|
|
process.env["GITHUB_REF"] = "refs/heads/main";
|
|
process.env["GITHUB_REPOSITORY"] = "octocat/HelloWorld";
|
|
process.env["GITHUB_RUN_ATTEMPT"] = "2";
|
|
process.env["GITHUB_RUN_ID"] = "100";
|
|
process.env["GITHUB_SHA"] = "a".repeat(40);
|
|
process.env["ImageVersion"] = "2023.05.19.1";
|
|
process.env["RUNNER_OS"] = "macOS";
|
|
process.env["RUNNER_TEMP"] = tmpDir;
|
|
|
|
const getRequiredInput = sinon.stub(actionsUtil, "getRequiredInput");
|
|
getRequiredInput.withArgs("matrix").resolves("input/matrix");
|
|
}
|
|
|
|
test("createStatusReportBase", async (t) => {
|
|
await withTmpDir(async (tmpDir: string) => {
|
|
setupEnvironmentAndStub(tmpDir);
|
|
|
|
const statusReport = await createStatusReportBase(
|
|
ActionName.Init,
|
|
"failure",
|
|
new Date("May 19, 2023 05:19:00"),
|
|
createTestConfig({
|
|
buildMode: BuildMode.None,
|
|
languages: [Language.java, Language.swift],
|
|
}),
|
|
{ numAvailableBytes: 100, numTotalBytes: 500 },
|
|
getRunnerLogger(false),
|
|
"failure cause",
|
|
"exception stack trace",
|
|
);
|
|
t.truthy(statusReport);
|
|
|
|
if (statusReport !== undefined) {
|
|
t.is(statusReport.action_name, ActionName.Init);
|
|
t.is(statusReport.action_oid, "unknown");
|
|
t.is(typeof statusReport.action_version, "string");
|
|
t.is(
|
|
statusReport.action_started_at,
|
|
new Date("May 19, 2023 05:19:00").toISOString(),
|
|
);
|
|
t.is(statusReport.actions_event_name, "dynamic");
|
|
t.is(statusReport.analysis_key, "analysis-key");
|
|
t.is(statusReport.build_mode, BuildMode.None);
|
|
t.is(statusReport.cause, "failure cause");
|
|
t.is(statusReport.commit_oid, process.env["GITHUB_SHA"]!);
|
|
t.is(statusReport.exception, "exception stack trace");
|
|
t.is(statusReport.job_name, process.env["GITHUB_JOB"] || "");
|
|
t.is(typeof statusReport.job_run_uuid, "string");
|
|
t.is(statusReport.languages, "java,swift");
|
|
t.is(statusReport.ref, process.env["GITHUB_REF"]!);
|
|
t.is(statusReport.runner_available_disk_space_bytes, 100);
|
|
t.is(statusReport.runner_image_version, process.env["ImageVersion"]);
|
|
t.is(statusReport.runner_os, process.env["RUNNER_OS"]!);
|
|
t.is(statusReport.started_at, process.env[EnvVar.WORKFLOW_STARTED_AT]!);
|
|
t.is(statusReport.status, "failure");
|
|
t.is(statusReport.steady_state_default_setup, false);
|
|
t.is(statusReport.workflow_name, process.env["GITHUB_WORKFLOW"] || "");
|
|
t.is(statusReport.workflow_run_attempt, 2);
|
|
t.is(statusReport.workflow_run_id, 100);
|
|
}
|
|
});
|
|
});
|
|
|
|
test("createStatusReportBase_firstParty", async (t) => {
|
|
await withTmpDir(async (tmpDir: string) => {
|
|
setupEnvironmentAndStub(tmpDir);
|
|
|
|
t.is(
|
|
(
|
|
await createStatusReportBase(
|
|
ActionName.UploadSarif,
|
|
"failure",
|
|
new Date("May 19, 2023 05:19:00"),
|
|
createTestConfig({}),
|
|
{ numAvailableBytes: 100, numTotalBytes: 500 },
|
|
getRunnerLogger(false),
|
|
"failure cause",
|
|
"exception stack trace",
|
|
)
|
|
)?.first_party_analysis,
|
|
false,
|
|
);
|
|
|
|
t.is(
|
|
(
|
|
await createStatusReportBase(
|
|
ActionName.Autobuild,
|
|
"failure",
|
|
new Date("May 19, 2023 05:19:00"),
|
|
createTestConfig({}),
|
|
{ numAvailableBytes: 100, numTotalBytes: 500 },
|
|
getRunnerLogger(false),
|
|
"failure cause",
|
|
"exception stack trace",
|
|
)
|
|
)?.first_party_analysis,
|
|
true,
|
|
);
|
|
|
|
process.env["CODEQL_ACTION_INIT_HAS_RUN"] = "foobar";
|
|
t.is(
|
|
(
|
|
await createStatusReportBase(
|
|
ActionName.UploadSarif,
|
|
"failure",
|
|
new Date("May 19, 2023 05:19:00"),
|
|
createTestConfig({}),
|
|
{ numAvailableBytes: 100, numTotalBytes: 500 },
|
|
getRunnerLogger(false),
|
|
"failure cause",
|
|
"exception stack trace",
|
|
)
|
|
)?.first_party_analysis,
|
|
false,
|
|
);
|
|
|
|
t.is(
|
|
(
|
|
await createStatusReportBase(
|
|
ActionName.Init,
|
|
"failure",
|
|
new Date("May 19, 2023 05:19:00"),
|
|
createTestConfig({}),
|
|
{ numAvailableBytes: 100, numTotalBytes: 500 },
|
|
getRunnerLogger(false),
|
|
"failure cause",
|
|
"exception stack trace",
|
|
)
|
|
)?.first_party_analysis,
|
|
true,
|
|
);
|
|
|
|
process.env["CODEQL_ACTION_INIT_HAS_RUN"] = "true";
|
|
t.is(
|
|
(
|
|
await createStatusReportBase(
|
|
ActionName.UploadSarif,
|
|
"failure",
|
|
new Date("May 19, 2023 05:19:00"),
|
|
createTestConfig({}),
|
|
{ numAvailableBytes: 100, numTotalBytes: 500 },
|
|
getRunnerLogger(false),
|
|
"failure cause",
|
|
"exception stack trace",
|
|
)
|
|
)?.first_party_analysis,
|
|
true,
|
|
);
|
|
|
|
t.is(
|
|
(
|
|
await createStatusReportBase(
|
|
ActionName.Analyze,
|
|
"failure",
|
|
new Date("May 19, 2023 05:19:00"),
|
|
createTestConfig({}),
|
|
{ numAvailableBytes: 100, numTotalBytes: 500 },
|
|
getRunnerLogger(false),
|
|
"failure cause",
|
|
"exception stack trace",
|
|
)
|
|
)?.first_party_analysis,
|
|
true,
|
|
);
|
|
});
|
|
});
|