Rename xcodeVersionFromSdk and improve comments/log messages

This commit is contained in:
Michael B. Gale
2026-10-30 16:18:06 +00:00
parent efea0445d3
commit 80d7b74bf4
5 changed files with 46 additions and 44 deletions

8
lib/entry-points.js generated
View File

@@ -183536,7 +183536,7 @@ ${stderr}`);
return void 0;
}
}
async function xcodeVersionFromSdk(logger2) {
async function xcodeSdkVersion(logger2) {
try {
const xcrun = await io4.which("xcrun", true);
let stdout = "";
@@ -183577,7 +183577,9 @@ ${stderr}`);
}
return version;
} catch (err) {
logger2.debug(`Unable to determine Xcode version: ${getErrorMessage(err)}`);
logger2.debug(
`Unable to determine Xcode SDK version: ${getErrorMessage(err)}`
);
return void 0;
}
}
@@ -194121,7 +194123,7 @@ async function checkRunnerSupportsTracedAnalysis(action, config, codeql) {
);
return;
}
const xcodeVer = xcodeVersionFromLink(action.logger) ?? await xcodeVersionFromXcodeBuild(action.logger) ?? await xcodeVersionFromSdk(action.logger);
const xcodeVer = xcodeVersionFromLink(action.logger) ?? await xcodeVersionFromXcodeBuild(action.logger) ?? await xcodeSdkVersion(action.logger);
if (xcodeVer !== void 0 && xcodeVer.major >= UNSUPPORTED_XCODE_FOR_TRACED) {
handleUnsupportedVersion(
action.logger,

View File

@@ -498,7 +498,7 @@ test.serial(
checkExpectedLogMessages(t, logger.messages, [
"Unable to determine Xcode version: Not found",
"Unable to determine Xcode version from xcodebuild: Error to force next fallback",
"Unable to determine Xcode version: Error to force next fallback",
"Unable to determine Xcode SDK version: Error to force next fallback",
]);
checkUnexpectedLogMessages(t, logger.messages, [
"Traced analysis is not supported on Xcode 27",

View File

@@ -10,7 +10,7 @@ import { Feature } from "../feature-flags";
import {
darwinVersion,
xcodeVersionFromLink,
xcodeVersionFromSdk,
xcodeSdkVersion,
xcodeVersionFromXcodeBuild,
} from "../platform";
import { ConfigurationError } from "../util";
@@ -208,7 +208,7 @@ export async function checkRunnerSupportsTracedAnalysis(
const xcodeVer =
xcodeVersionFromLink(action.logger) ??
(await xcodeVersionFromXcodeBuild(action.logger)) ??
(await xcodeVersionFromSdk(action.logger));
(await xcodeSdkVersion(action.logger));
if (
xcodeVer !== undefined &&

View File

@@ -12,7 +12,7 @@ import {
darwinVersion,
XCODE_SELECT_LINK_PATH,
xcodeVersionFromLink,
xcodeVersionFromSdk,
xcodeSdkVersion,
xcodeVersionFromXcodeBuild,
} from "./platform";
import {
@@ -298,7 +298,7 @@ test.serial(
);
test.serial(
"xcodeVersionFromSdk returns undefined for non-zero exit code",
"xcodeSdkVersion returns undefined for non-zero exit code",
async (t) => {
const logger = new RecordingLogger();
@@ -308,7 +308,7 @@ test.serial(
const toolrunnerStub = sinon.stub(toolrunner, "ToolRunner").returns(runner);
await t.notThrowsAsync(async () => {
const result = await xcodeVersionFromSdk(logger);
const result = await xcodeSdkVersion(logger);
t.is(result, undefined);
@@ -325,41 +325,38 @@ test.serial(
},
);
test.serial(
"xcodeVersionFromSdk extracts version from xcrun stdout",
async (t) => {
const logger = new RecordingLogger();
test.serial("xcodeSdkVersion extracts version from xcrun stdout", async (t) => {
const logger = new RecordingLogger();
const which = sinon.stub(io, "which").resolves("/path/to/xcrun");
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("26.5"));
}
return 0;
let stdoutListener: ((data: Buffer) => void) | undefined = undefined;
const exec = sinon.stub<[], Promise<number>>().callsFake(async () => {
if (stdoutListener !== undefined) {
stdoutListener(Buffer.from("26.5"));
}
return 0;
});
const runner = sinon.createStubInstance(toolrunner.ToolRunner, { exec });
const toolrunnerStub = sinon
.stub(toolrunner, "ToolRunner")
.callsFake((_cmd, _args, opts: ExecOptions) => {
stdoutListener = opts.listeners?.stdout;
return runner;
});
const runner = sinon.createStubInstance(toolrunner.ToolRunner, { exec });
const toolrunnerStub = sinon
.stub(toolrunner, "ToolRunner")
.callsFake((_cmd, _args, opts: ExecOptions) => {
stdoutListener = opts.listeners?.stdout;
return runner;
});
await t.notThrowsAsync(async () => {
const result = await xcodeSdkVersion(logger);
await t.notThrowsAsync(async () => {
const result = await xcodeVersionFromSdk(logger);
t.not(result, undefined);
t.is(result?.major, 26);
t.is(result?.minor, 5);
t.not(result, undefined);
t.is(result?.major, 26);
t.is(result?.minor, 5);
t.is(which.callCount, 1);
t.deepEqual(which.args[0], ["xcrun", true]);
t.is(which.callCount, 1);
t.deepEqual(which.args[0], ["xcrun", true]);
t.is(toolrunnerStub.callCount, 1);
t.is(exec.callCount, 1);
});
},
);
t.is(toolrunnerStub.callCount, 1);
t.is(exec.callCount, 1);
});
});

View File

@@ -186,12 +186,13 @@ export async function xcodeVersionFromXcodeBuild(
}
/**
* Tries to determine the version of Xcode that is installed by running `xcrun --sdk macosx --show-sdk-version`.
* Tries to determine the version of the Xcode SDK that is installed by running
* `xcrun --sdk macosx --show-sdk-version`.
*
* @param logger The logger to use.
* @returns The Xcode version or `undefined` if it couldn't be determined.
* @returns The Xcode SDK version or `undefined` if it couldn't be determined.
*/
export async function xcodeVersionFromSdk(
export async function xcodeSdkVersion(
logger: Logger,
): Promise<semver.SemVer | undefined> {
try {
@@ -236,7 +237,9 @@ export async function xcodeVersionFromSdk(
return version;
} catch (err) {
logger.debug(`Unable to determine Xcode version: ${getErrorMessage(err)}`);
logger.debug(
`Unable to determine Xcode SDK version: ${getErrorMessage(err)}`,
);
return undefined;
}
}