test(refactor): dedupe cli and ios script scenarios

This commit is contained in:
Peter Steinberger
2026-03-02 11:16:33 +00:00
parent 1b98879295
commit 0c2d85529a
2 changed files with 121 additions and 82 deletions

View File

@@ -6,6 +6,9 @@ import path from "node:path";
import { afterAll, beforeAll, describe, expect, it } from "vitest";
const SCRIPT = path.join(process.cwd(), "scripts", "ios-team-id.sh");
const BASH_BIN = process.platform === "win32" ? "bash" : "/bin/bash";
const BASE_PATH = process.env.PATH ?? "/usr/bin:/bin";
const BASE_LANG = process.env.LANG ?? "C";
let fixtureRoot = "";
let sharedBinDir = "";
let caseId = 0;
@@ -25,13 +28,13 @@ function runScript(
} {
const binDir = path.join(homeDir, "bin");
const env = {
...process.env,
HOME: homeDir,
PATH: `${binDir}:${sharedBinDir}:${process.env.PATH ?? ""}`,
PATH: `${binDir}:${sharedBinDir}:${BASE_PATH}`,
LANG: BASE_LANG,
...extraEnv,
};
try {
const stdout = execFileSync("bash", [SCRIPT], {
const stdout = execFileSync(BASH_BIN, [SCRIPT], {
env,
encoding: "utf8",
stdio: ["ignore", "pipe", "pipe"],
@@ -109,19 +112,20 @@ exit 1`,
return { homeDir, binDir };
}
it("falls back to Xcode-managed provisioning profiles when preference teams are empty", async () => {
it("resolves fallback and preferred team IDs from provisioning profiles", async () => {
const { homeDir } = await createHomeDir();
await mkdir(path.join(homeDir, "Library", "MobileDevice", "Provisioning Profiles"), {
recursive: true,
});
await writeFile(
path.join(homeDir, "Library", "MobileDevice", "Provisioning Profiles", "one.mobileprovision"),
"stub",
);
const profilesDir = path.join(homeDir, "Library", "MobileDevice", "Provisioning Profiles");
await mkdir(profilesDir, { recursive: true });
await writeFile(path.join(profilesDir, "one.mobileprovision"), "stub1");
const result = runScript(homeDir);
expect(result.ok).toBe(true);
expect(result.stdout).toBe("AAAAA11111");
const fallbackResult = runScript(homeDir);
expect(fallbackResult.ok).toBe(true);
expect(fallbackResult.stdout).toBe("AAAAA11111");
await writeFile(path.join(profilesDir, "two.mobileprovision"), "stub2");
const preferredResult = runScript(homeDir, { IOS_PREFERRED_TEAM_ID: "BBBBB22222" });
expect(preferredResult.ok).toBe(true);
expect(preferredResult.stdout).toBe("BBBBB22222");
});
it("prints actionable guidance when Xcode account exists but no Team ID is resolvable", async () => {
@@ -148,25 +152,6 @@ exit 1`,
expect(result.stderr).toContain("IOS_DEVELOPMENT_TEAM");
});
it("honors IOS_PREFERRED_TEAM_ID when multiple profile teams are available", async () => {
const { homeDir } = await createHomeDir();
await mkdir(path.join(homeDir, "Library", "MobileDevice", "Provisioning Profiles"), {
recursive: true,
});
await writeFile(
path.join(homeDir, "Library", "MobileDevice", "Provisioning Profiles", "one.mobileprovision"),
"stub1",
);
await writeFile(
path.join(homeDir, "Library", "MobileDevice", "Provisioning Profiles", "two.mobileprovision"),
"stub2",
);
const result = runScript(homeDir, { IOS_PREFERRED_TEAM_ID: "BBBBB22222" });
expect(result.ok).toBe(true);
expect(result.stdout).toBe("BBBBB22222");
});
it("matches preferred team IDs even when parser output uses CRLF line endings", async () => {
const { homeDir, binDir } = await createHomeDir();
await writeExecutable(