From ccf29464dbf4def7945f3b1b582c5727090d1dab Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Sun, 12 Apr 2026 04:51:01 +0100 Subject: [PATCH] test(scripts): share ios fixture setup --- test/scripts/ios-pin-version.test.ts | 49 +++--------------------- test/scripts/ios-version.test-support.ts | 49 ++++++++++++++++++++++++ test/scripts/ios-version.test.ts | 36 ++--------------- 3 files changed, 58 insertions(+), 76 deletions(-) create mode 100644 test/scripts/ios-version.test-support.ts diff --git a/test/scripts/ios-pin-version.test.ts b/test/scripts/ios-pin-version.test.ts index b4f206fcfed..295008ad6a4 100644 --- a/test/scripts/ios-pin-version.test.ts +++ b/test/scripts/ios-pin-version.test.ts @@ -1,51 +1,11 @@ import fs from "node:fs"; import path from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { pinIosVersion, parseArgs } from "../../scripts/ios-pin-version.ts"; import { resolveIosVersion } from "../../scripts/lib/ios-version.ts"; -import { cleanupTempDirs, makeTempDir } from "../helpers/temp-dir.js"; +import { installIosFixtureCleanup, writeIosFixture } from "./ios-version.test-support.ts"; -const tempDirs: string[] = []; - -function writeIosFixture(params: { - version: string; - changelog: string; - packageVersion?: string; - releaseNotes?: string; - versionXcconfig?: string; -}) { - const rootDir = makeTempDir(tempDirs, "openclaw-ios-pin-"); - fs.mkdirSync(path.join(rootDir, "apps", "ios", "Config"), { recursive: true }); - fs.mkdirSync(path.join(rootDir, "apps", "ios", "fastlane", "metadata", "en-US"), { - recursive: true, - }); - fs.writeFileSync( - path.join(rootDir, "package.json"), - `${JSON.stringify({ version: params.packageVersion ?? "2026.4.6" }, null, 2)}\n`, - "utf8", - ); - fs.writeFileSync( - path.join(rootDir, "apps", "ios", "version.json"), - `${JSON.stringify({ version: params.version }, null, 2)}\n`, - "utf8", - ); - fs.writeFileSync(path.join(rootDir, "apps", "ios", "CHANGELOG.md"), params.changelog, "utf8"); - fs.writeFileSync( - path.join(rootDir, "apps", "ios", "Config", "Version.xcconfig"), - params.versionXcconfig ?? "", - "utf8", - ); - fs.writeFileSync( - path.join(rootDir, "apps", "ios", "fastlane", "metadata", "en-US", "release_notes.txt"), - params.releaseNotes ?? "", - "utf8", - ); - return rootDir; -} - -afterEach(() => { - cleanupTempDirs(tempDirs); -}); +installIosFixtureCleanup(); describe("parseArgs", () => { it("requires exactly one pin source", () => { @@ -68,6 +28,7 @@ describe("pinIosVersion", () => { - Draft release notes. `, + prefix: "openclaw-ios-pin-", }); const result = pinIosVersion({ @@ -106,6 +67,7 @@ describe("pinIosVersion", () => { - Candidate release notes. `, + prefix: "openclaw-ios-pin-", }); const result = pinIosVersion({ @@ -132,6 +94,7 @@ describe("pinIosVersion", () => { `, versionXcconfig: "stale\n", releaseNotes: "stale\n", + prefix: "openclaw-ios-pin-", }); const result = pinIosVersion({ diff --git a/test/scripts/ios-version.test-support.ts b/test/scripts/ios-version.test-support.ts new file mode 100644 index 00000000000..dff031f7659 --- /dev/null +++ b/test/scripts/ios-version.test-support.ts @@ -0,0 +1,49 @@ +import fs from "node:fs"; +import path from "node:path"; +import { afterEach } from "vitest"; +import { cleanupTempDirs, makeTempDir } from "../helpers/temp-dir.js"; + +const tempDirs: string[] = []; + +export function installIosFixtureCleanup(): void { + afterEach(() => { + cleanupTempDirs(tempDirs); + }); +} + +export function writeIosFixture(params: { + version: string; + changelog: string; + packageVersion?: string; + releaseNotes?: string; + versionXcconfig?: string; + prefix?: string; +}): string { + const rootDir = makeTempDir(tempDirs, params.prefix ?? "openclaw-ios-version-"); + fs.mkdirSync(path.join(rootDir, "apps", "ios", "Config"), { recursive: true }); + fs.mkdirSync(path.join(rootDir, "apps", "ios", "fastlane", "metadata", "en-US"), { + recursive: true, + }); + fs.writeFileSync( + path.join(rootDir, "package.json"), + `${JSON.stringify({ version: params.packageVersion ?? "2026.4.6" }, null, 2)}\n`, + "utf8", + ); + fs.writeFileSync( + path.join(rootDir, "apps", "ios", "version.json"), + `${JSON.stringify({ version: params.version }, null, 2)}\n`, + "utf8", + ); + fs.writeFileSync(path.join(rootDir, "apps", "ios", "CHANGELOG.md"), params.changelog, "utf8"); + fs.writeFileSync( + path.join(rootDir, "apps", "ios", "Config", "Version.xcconfig"), + params.versionXcconfig ?? "", + "utf8", + ); + fs.writeFileSync( + path.join(rootDir, "apps", "ios", "fastlane", "metadata", "en-US", "release_notes.txt"), + params.releaseNotes ?? "", + "utf8", + ); + return rootDir; +} diff --git a/test/scripts/ios-version.test.ts b/test/scripts/ios-version.test.ts index 3fe8e7d0c60..417fd31d258 100644 --- a/test/scripts/ios-version.test.ts +++ b/test/scripts/ios-version.test.ts @@ -1,6 +1,6 @@ import fs from "node:fs"; import path from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { extractChangelogSection, normalizeGatewayVersionToPinnedIosVersion, @@ -9,39 +9,9 @@ import { resolveGatewayVersionForIosRelease, resolveIosVersion, } from "../../scripts/lib/ios-version.ts"; -import { cleanupTempDirs, makeTempDir } from "../helpers/temp-dir.js"; +import { installIosFixtureCleanup, writeIosFixture } from "./ios-version.test-support.ts"; -const tempDirs: string[] = []; - -function writeIosFixture(params: { version: string; changelog: string; packageVersion?: string }) { - const rootDir = makeTempDir(tempDirs, "openclaw-ios-version-"); - fs.mkdirSync(path.join(rootDir, "apps", "ios", "Config"), { recursive: true }); - fs.mkdirSync(path.join(rootDir, "apps", "ios", "fastlane", "metadata", "en-US"), { - recursive: true, - }); - fs.writeFileSync( - path.join(rootDir, "package.json"), - `${JSON.stringify({ version: params.packageVersion ?? "2026.4.6" }, null, 2)}\n`, - "utf8", - ); - fs.writeFileSync( - path.join(rootDir, "apps", "ios", "version.json"), - `${JSON.stringify({ version: params.version }, null, 2)}\n`, - "utf8", - ); - fs.writeFileSync(path.join(rootDir, "apps", "ios", "CHANGELOG.md"), params.changelog, "utf8"); - fs.writeFileSync(path.join(rootDir, "apps", "ios", "Config", "Version.xcconfig"), "", "utf8"); - fs.writeFileSync( - path.join(rootDir, "apps", "ios", "fastlane", "metadata", "en-US", "release_notes.txt"), - "", - "utf8", - ); - return rootDir; -} - -afterEach(() => { - cleanupTempDirs(tempDirs); -}); +installIosFixtureCleanup(); describe("resolveIosVersion", () => { it("parses pinned CalVer versions and derives Apple marketing fields", () => {