mirror of
https://github.com/github/codeql-action.git
synced 2026-06-01 03:14:50 +00:00
116 lines
3.9 KiB
TypeScript
116 lines
3.9 KiB
TypeScript
import test from "ava";
|
|
|
|
import { RepositoryPropertyName } from "./feature-flags/properties";
|
|
import type { RepositoryProperties } from "./feature-flags/properties";
|
|
import { resolveToolsInput } from "./resolve-tools-input";
|
|
import { getRecordingLogger, LoggedMessage, setupTests } from "./testing-utils";
|
|
|
|
setupTests(test);
|
|
|
|
test("resolveToolsInput returns undefined when no tools input or repository property is set", (t) => {
|
|
const loggedMessages: LoggedMessage[] = [];
|
|
const logger = getRecordingLogger(loggedMessages);
|
|
|
|
const result = resolveToolsInput(undefined, true, {}, logger);
|
|
|
|
t.is(result, undefined);
|
|
t.is(loggedMessages.length, 0);
|
|
});
|
|
|
|
test("resolveToolsInput returns workflow input when only workflow input is provided", (t) => {
|
|
const loggedMessages: LoggedMessage[] = [];
|
|
const logger = getRecordingLogger(loggedMessages);
|
|
|
|
const result = resolveToolsInput("latest", true, {}, logger);
|
|
|
|
t.is(result, "latest");
|
|
t.is(loggedMessages.length, 1);
|
|
t.is(
|
|
loggedMessages[0].message,
|
|
"Setting tools: latest based on workflow input.",
|
|
);
|
|
});
|
|
|
|
test("resolveToolsInput returns repository property when only repository property is provided", (t) => {
|
|
const loggedMessages: LoggedMessage[] = [];
|
|
const logger = getRecordingLogger(loggedMessages);
|
|
|
|
const repositoryProperties: RepositoryProperties = {
|
|
[RepositoryPropertyName.TOOLS]: "toolcache",
|
|
};
|
|
const result = resolveToolsInput(undefined, true, repositoryProperties, logger);
|
|
|
|
t.is(result, "toolcache");
|
|
t.is(loggedMessages.length, 1);
|
|
t.is(
|
|
loggedMessages[0].message,
|
|
"Setting tools: toolcache based on the 'github-codeql-tools' repository property.",
|
|
);
|
|
});
|
|
|
|
test("resolveToolsInput prioritizes workflow input over repository property", (t) => {
|
|
const loggedMessages: LoggedMessage[] = [];
|
|
const logger = getRecordingLogger(loggedMessages);
|
|
|
|
const repositoryProperties: RepositoryProperties = {
|
|
[RepositoryPropertyName.TOOLS]: "toolcache",
|
|
};
|
|
const result = resolveToolsInput("nightly", true, repositoryProperties, logger);
|
|
|
|
t.is(result, "nightly");
|
|
t.is(loggedMessages.length, 1);
|
|
t.is(
|
|
loggedMessages[0].message,
|
|
"Setting tools: nightly based on workflow input.",
|
|
);
|
|
});
|
|
|
|
test("resolveToolsInput treats empty string workflow input as not set", (t) => {
|
|
const loggedMessages: LoggedMessage[] = [];
|
|
const logger = getRecordingLogger(loggedMessages);
|
|
|
|
const repositoryProperties: RepositoryProperties = {
|
|
[RepositoryPropertyName.TOOLS]: "toolcache",
|
|
};
|
|
const result = resolveToolsInput("", true, repositoryProperties, logger);
|
|
|
|
t.is(result, "toolcache");
|
|
t.is(loggedMessages.length, 1);
|
|
t.is(
|
|
loggedMessages[0].message,
|
|
"Setting tools: toolcache based on the 'github-codeql-tools' repository property.",
|
|
);
|
|
});
|
|
|
|
test("resolveToolsInput returns undefined when repository property is undefined", (t) => {
|
|
const loggedMessages: LoggedMessage[] = [];
|
|
const logger = getRecordingLogger(loggedMessages);
|
|
|
|
const repositoryProperties: RepositoryProperties = {
|
|
[RepositoryPropertyName.TOOLS]: undefined,
|
|
};
|
|
const result = resolveToolsInput(undefined, true, repositoryProperties, logger);
|
|
|
|
t.is(result, undefined);
|
|
t.is(loggedMessages.length, 0);
|
|
});
|
|
|
|
test("resolveToolsInput ignores repository property when fallback is disabled", (t) => {
|
|
const loggedMessages: LoggedMessage[] = [];
|
|
const logger = getRecordingLogger(loggedMessages);
|
|
|
|
const repositoryProperties: RepositoryProperties = {
|
|
[RepositoryPropertyName.TOOLS]: "toolcache",
|
|
};
|
|
const result = resolveToolsInput(undefined, false, repositoryProperties, logger);
|
|
|
|
t.is(result, undefined);
|
|
t.is(loggedMessages.length, 1);
|
|
const fallbackDisabledMessage = String(loggedMessages[0].message);
|
|
t.true(
|
|
/Ignoring 'github-codeql-tools' repository property because it is only supported for (dynamic workflows|default setup)\./.test(
|
|
fallbackDisabledMessage,
|
|
),
|
|
);
|
|
});
|