Move logging messages to downstream function and add deprecation notice
This commit is contained in:
parent
1796f5474f
commit
bcc13653e8
7 changed files with 142 additions and 33 deletions
|
|
@ -114,6 +114,9 @@ test("getCodeQLSource correctly returns bundled CLI version when tools == linked
|
|||
});
|
||||
|
||||
test("getCodeQLSource correctly returns bundled CLI version when tools == latest", async (t) => {
|
||||
const loggedMessages: LoggedMessage[] = [];
|
||||
const logger = getRecordingLogger(loggedMessages);
|
||||
|
||||
await withTmpDir(async (tmpDir) => {
|
||||
setupActionsVars(tmpDir, tmpDir);
|
||||
const source = await setupCodeql.getCodeQLSource(
|
||||
|
|
@ -121,15 +124,28 @@ test("getCodeQLSource correctly returns bundled CLI version when tools == latest
|
|||
SAMPLE_DEFAULT_CLI_VERSION,
|
||||
SAMPLE_DOTCOM_API_DETAILS,
|
||||
GitHubVariant.DOTCOM,
|
||||
getRunnerLogger(true),
|
||||
logger,
|
||||
);
|
||||
|
||||
// First, ensure that the CLI version is the linked version, so that backwards
|
||||
// compatibility is maintained.
|
||||
t.is(source.toolsVersion, LINKED_CLI_VERSION.cliVersion);
|
||||
t.is(source.sourceType, "download");
|
||||
|
||||
// Afterwards, ensure that we see the deprecation message in the log.
|
||||
const expected_message: string =
|
||||
"The 'latest' alias for the CodeQL tools has been deprecated. Please use 'linked' instead.";
|
||||
t.assert(
|
||||
loggedMessages.some(
|
||||
(msg) =>
|
||||
typeof msg.message === "string" &&
|
||||
msg.message.includes(expected_message),
|
||||
),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test("setupCodeQLBundle logs the CodeQL CLI version being used", async (t) => {
|
||||
test("setupCodeQLBundle logs the CodeQL CLI version being used when asked to use linked tools", async (t) => {
|
||||
const loggedMessages: LoggedMessage[] = [];
|
||||
const logger = getRecordingLogger(loggedMessages);
|
||||
|
||||
|
|
@ -156,14 +172,57 @@ test("setupCodeQLBundle logs the CodeQL CLI version being used", async (t) => {
|
|||
// the linked (default) CLI version.
|
||||
t.is(result.toolsVersion, LINKED_CLI_VERSION.cliVersion);
|
||||
|
||||
const expected_message: LoggedMessage = {
|
||||
type: "info",
|
||||
message: `Using CodeQL CLI version ${LINKED_CLI_VERSION.cliVersion} from download.`,
|
||||
};
|
||||
|
||||
// Ensure message logging CodeQL CLI version was present in user logs.
|
||||
const expected_message: string = `Using CodeQL CLI version ${LINKED_CLI_VERSION.cliVersion}`;
|
||||
t.assert(
|
||||
loggedMessages.some((msg) => msg.message === expected_message.message),
|
||||
loggedMessages.some(
|
||||
(msg) =>
|
||||
typeof msg.message === "string" &&
|
||||
msg.message.includes(expected_message),
|
||||
),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test("setupCodeQLBundle logs the CodeQL CLI version being used when asked to download a non-default bundle", async (t) => {
|
||||
const loggedMessages: LoggedMessage[] = [];
|
||||
const logger = getRecordingLogger(loggedMessages);
|
||||
|
||||
const bundleUrl =
|
||||
"https://github.com/github/codeql-action/releases/download/codeql-bundle-v2.16.0/codeql-bundle-linux64.tar.gz";
|
||||
const expectedVersion = "2.16.0";
|
||||
|
||||
// Stub the downloadCodeQL function to prevent downloading artefacts
|
||||
// during testing from being called.
|
||||
sinon.stub(setupCodeql, "downloadCodeQL").resolves({
|
||||
toolsVersion: expectedVersion,
|
||||
codeqlFolder: "codeql",
|
||||
toolsDownloadDurationMs: 200,
|
||||
});
|
||||
|
||||
await withTmpDir(async (tmpDir) => {
|
||||
setupActionsVars(tmpDir, tmpDir);
|
||||
const result = await setupCodeql.setupCodeQLBundle(
|
||||
bundleUrl,
|
||||
SAMPLE_DOTCOM_API_DETAILS,
|
||||
"tmp/codeql_action_test/",
|
||||
GitHubVariant.DOTCOM,
|
||||
SAMPLE_DEFAULT_CLI_VERSION,
|
||||
logger,
|
||||
);
|
||||
|
||||
// Basic sanity check that the version we got back is indeed the version that the
|
||||
// bundle contains..
|
||||
t.is(result.toolsVersion, expectedVersion);
|
||||
|
||||
// Ensure message logging CodeQL CLI version was present in user logs.
|
||||
const expected_message: string = `Using CodeQL CLI version 2.16.0 downloaded from ${bundleUrl}.`;
|
||||
t.assert(
|
||||
loggedMessages.some(
|
||||
(msg) =>
|
||||
typeof msg.message === "string" &&
|
||||
msg.message.includes(expected_message),
|
||||
),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -288,6 +288,7 @@ export async function getCodeQLSource(
|
|||
!CODEQL_BUNDLE_VERSION_ALIAS.includes(toolsInput) &&
|
||||
!toolsInput.startsWith("http")
|
||||
) {
|
||||
logger.info("Using CodeQL CLI from local path $path");
|
||||
return {
|
||||
codeqlTarPath: toolsInput,
|
||||
sourceType: "local",
|
||||
|
|
@ -310,10 +311,15 @@ export async function getCodeQLSource(
|
|||
toolsInput && CODEQL_BUNDLE_VERSION_ALIAS.includes(toolsInput);
|
||||
if (forceShippedTools) {
|
||||
logger.info(
|
||||
"Overriding the version of the CodeQL tools by the version shipped with the Action since " +
|
||||
`"tools: linked" or "tools: latest" was requested. The version shipped with the Action is ` +
|
||||
`${defaultCliVersion.cliVersion}.`,
|
||||
`Overriding the version of the CodeQL tools by ${defaultCliVersion.cliVersion}, the version shipped with the Action since ` +
|
||||
`tools: ${toolsInput} was requested.`,
|
||||
);
|
||||
|
||||
if (toolsInput === "latest") {
|
||||
logger.warning(
|
||||
"The 'latest' alias for the CodeQL tools has been deprecated. Please use 'linked' instead.",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/** CLI version number, for example 2.12.6. */
|
||||
|
|
@ -436,10 +442,14 @@ export async function getCodeQLSource(
|
|||
}
|
||||
|
||||
if (codeqlFolder) {
|
||||
const version = cliVersion ?? humanReadableVersion;
|
||||
logger.info(
|
||||
`Using CodeQL CLI version ${version} from toolcache at ${codeqlFolder}`,
|
||||
);
|
||||
return {
|
||||
codeqlFolder,
|
||||
sourceType: "toolcache",
|
||||
toolsVersion: cliVersion ?? humanReadableVersion,
|
||||
toolsVersion: version,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -464,12 +474,16 @@ export async function getCodeQLSource(
|
|||
url = await getCodeQLBundleDownloadURL(tagName!, apiDetails, logger);
|
||||
}
|
||||
|
||||
const toolsVersion = cliVersion ?? humanReadableVersion;
|
||||
logger.info(
|
||||
`Using CodeQL CLI version ${toolsVersion} downloaded from ${url}.`,
|
||||
);
|
||||
return {
|
||||
bundleVersion: tagName && tryGetBundleVersionFromTagName(tagName, logger),
|
||||
cliVersion,
|
||||
codeqlURL: url,
|
||||
sourceType: "download",
|
||||
toolsVersion: cliVersion ?? humanReadableVersion,
|
||||
toolsVersion,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -494,6 +508,8 @@ export async function tryGetFallbackToolcacheVersion(
|
|||
return fallbackVersion;
|
||||
}
|
||||
|
||||
// Exported using `export const` for testing purposes. Specifically, we want to
|
||||
// be able to stub this function and have other functions in this file use that stub.
|
||||
export const downloadCodeQL = async function (
|
||||
codeqlURL: string,
|
||||
maybeBundleVersion: string | undefined,
|
||||
|
|
@ -693,10 +709,6 @@ export async function setupCodeQLBundle(
|
|||
logger,
|
||||
);
|
||||
|
||||
logger.info(
|
||||
`Using CodeQL CLI version ${source.toolsVersion} from ${source.sourceType}.`,
|
||||
);
|
||||
|
||||
let codeqlFolder: string;
|
||||
let toolsVersion = source.toolsVersion;
|
||||
let toolsDownloadDurationMs: number | undefined;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue