mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 07:10:43 +00:00
test(scripts): share ios fixture setup
This commit is contained in:
@@ -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({
|
||||
|
||||
49
test/scripts/ios-version.test-support.ts
Normal file
49
test/scripts/ios-version.test-support.ts
Normal file
@@ -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;
|
||||
}
|
||||
@@ -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", () => {
|
||||
|
||||
Reference in New Issue
Block a user