Convert diagnostic ID to kebab case

This commit is contained in:
Michael B. Gale
2026-10-30 18:06:04 +00:00
parent f1396bd6e2
commit 120993f723
3 changed files with 101 additions and 2 deletions

2
lib/entry-points.js generated
View File

@@ -194046,7 +194046,7 @@ function handleUnsupportedVersion(logger2, config, tracedLanguages, abortUnsuppo
config,
language,
makeDiagnostic(
`codeql-action/unsupported-traced-analysis-${product.toLowerCase()}`,
`codeql-action/unsupported-traced-analysis-${product.toLowerCase().replaceAll(" ", "-")}`,
`Traced analysis is not supported on this version of ${product}`,
{
attributes: {

View File

@@ -1,5 +1,6 @@
import fs from "fs";
import type { ExecOptions } from "@actions/exec";
import * as toolrunner from "@actions/exec/lib/toolrunner";
import * as io from "@actions/io";
import test from "ava";
@@ -546,6 +547,104 @@ test.serial(
}),
);
// `addDiagnostic` changes global state and we must stub it, so this test must be serial.
test.serial(
"checkRunnerSupportsTracedAnalysis logs and adds diagnostic if Xcode SDK version is unsupported",
async (t) =>
withTmpDir(async (tmpDir) => {
const logger = new RecordingLogger();
const env = getTestEnv();
env.set(ActionsEnvVars.RUNNER_TEMP, tmpDir);
const features = createFeatures([Feature.CheckUnsupportedTracedAnalysis]);
const readlinkSync = sinon
.stub(fs, "readlinkSync")
.throws(new Error("Not found"));
const which = sinon.stub(io, "which").resolves("/path/to/xcrun");
let stdoutListener: ((data: Buffer) => void) | undefined = undefined;
const exec = sinon.stub<[], Promise<number>>().callsFake(async () => {
if (stdoutListener !== undefined) {
stdoutListener(Buffer.from("Xcode 27.5"));
stdoutListener(Buffer.from("Build version 27F9"));
return 0;
} else {
throw new Error("Error to force next fallback");
}
});
const runner = sinon.createStubInstance(toolrunner.ToolRunner, {
exec,
});
const toolrunnerStub = sinon
.stub(toolrunner, "ToolRunner")
.callsFake((_cmd, args: string[], opts: ExecOptions) => {
if (args[0] !== "xcodebuild") {
stdoutListener = opts.listeners?.stdout;
}
return runner;
});
const codeql = await getCodeQLWithTracedStub(
"codeql-for-testing",
logger,
env,
);
sinon.stub(codeql, "getVersion").resolves(makeVersionInfo("2.27.0"));
const addDiagnostic = sinon.stub(diagnostics, "addDiagnostic");
const config = createTestConfig({
tempDir: tmpDir,
languages: [BuiltInLanguage.swift],
});
await checkRunnerSupportsTracedAnalysis(
initAllState({
logger,
platform: "darwin",
osRelease: "26.0.0",
env,
features,
}),
config,
codeql,
);
t.is(readlinkSync.callCount, 1);
t.deepEqual(readlinkSync.args[0], [XCODE_SELECT_LINK_PATH]);
t.is(which.callCount, 2);
t.is(toolrunnerStub.callCount, 2);
t.is(exec.callCount, 2);
checkExpectedLogMessages(t, logger.messages, [
"Unable to determine Xcode version from xcodebuild",
"Traced analysis is not supported on Xcode SDK 27",
]);
t.is(addDiagnostic.callCount, 1);
t.like(addDiagnostic.args[0], [
config,
BuiltInLanguage.swift,
{
attributes: {
languages: [BuiltInLanguage.swift],
xcodeSdkVersion: "27.5.0",
},
severity: "warning",
source: {
id: "codeql-action/unsupported-traced-analysis-xcode-sdk",
name: "Traced analysis is not supported on this version of Xcode SDK",
},
visibility: {
cliSummaryTable: true,
statusPage: true,
telemetry: true,
},
} satisfies Partial<diagnostics.DiagnosticMessage>,
]);
}),
);
// `addDiagnostic` changes global state and we must stub it, so this test must be serial.
test.serial(
"checkRunnerSupportsTracedAnalysis throws if Xcode version is unsupported and FF is enabled",

View File

@@ -83,7 +83,7 @@ function handleUnsupportedVersion(
config,
language,
makeDiagnostic(
`codeql-action/unsupported-traced-analysis-${product.toLowerCase()}`,
`codeql-action/unsupported-traced-analysis-${product.toLowerCase().replaceAll(" ", "-")}`,
`Traced analysis is not supported on this version of ${product}`,
{
attributes: {