mirror of
https://github.com/github/codeql-action.git
synced 2026-05-31 10:54:40 +00:00
148 lines
4.2 KiB
TypeScript
148 lines
4.2 KiB
TypeScript
import test from "ava";
|
|
|
|
import { resolveToolsInput } from "../config/resolve-tools-input";
|
|
import { RepositoryPropertyName } from "../feature-flags/properties";
|
|
import type { RepositoryProperties } from "../feature-flags/properties";
|
|
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 returns 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, "toolcache");
|
|
t.is(loggedMessages.length, 1);
|
|
t.is(
|
|
loggedMessages[0].message,
|
|
"Setting tools: toolcache based on the 'github-codeql-tools' repository property.",
|
|
);
|
|
});
|
|
|
|
test("resolveToolsInput does not log when fallback is disabled and repository property is not set", (t) => {
|
|
const loggedMessages: LoggedMessage[] = [];
|
|
const logger = getRecordingLogger(loggedMessages);
|
|
|
|
const result = resolveToolsInput(undefined, false, {}, logger);
|
|
|
|
t.is(result, undefined);
|
|
t.is(loggedMessages.length, 0);
|
|
});
|