mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-13 15:47:28 +00:00
test(scripts): share ios fixture setup
This commit is contained in:
@@ -1,51 +1,11 @@
|
|||||||
import fs from "node:fs";
|
import fs from "node:fs";
|
||||||
import path from "node:path";
|
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 { pinIosVersion, parseArgs } from "../../scripts/ios-pin-version.ts";
|
||||||
import { resolveIosVersion } from "../../scripts/lib/ios-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[] = [];
|
installIosFixtureCleanup();
|
||||||
|
|
||||||
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);
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("parseArgs", () => {
|
describe("parseArgs", () => {
|
||||||
it("requires exactly one pin source", () => {
|
it("requires exactly one pin source", () => {
|
||||||
@@ -68,6 +28,7 @@ describe("pinIosVersion", () => {
|
|||||||
|
|
||||||
- Draft release notes.
|
- Draft release notes.
|
||||||
`,
|
`,
|
||||||
|
prefix: "openclaw-ios-pin-",
|
||||||
});
|
});
|
||||||
|
|
||||||
const result = pinIosVersion({
|
const result = pinIosVersion({
|
||||||
@@ -106,6 +67,7 @@ describe("pinIosVersion", () => {
|
|||||||
|
|
||||||
- Candidate release notes.
|
- Candidate release notes.
|
||||||
`,
|
`,
|
||||||
|
prefix: "openclaw-ios-pin-",
|
||||||
});
|
});
|
||||||
|
|
||||||
const result = pinIosVersion({
|
const result = pinIosVersion({
|
||||||
@@ -132,6 +94,7 @@ describe("pinIosVersion", () => {
|
|||||||
`,
|
`,
|
||||||
versionXcconfig: "stale\n",
|
versionXcconfig: "stale\n",
|
||||||
releaseNotes: "stale\n",
|
releaseNotes: "stale\n",
|
||||||
|
prefix: "openclaw-ios-pin-",
|
||||||
});
|
});
|
||||||
|
|
||||||
const result = pinIosVersion({
|
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 fs from "node:fs";
|
||||||
import path from "node:path";
|
import path from "node:path";
|
||||||
import { afterEach, describe, expect, it } from "vitest";
|
import { describe, expect, it } from "vitest";
|
||||||
import {
|
import {
|
||||||
extractChangelogSection,
|
extractChangelogSection,
|
||||||
normalizeGatewayVersionToPinnedIosVersion,
|
normalizeGatewayVersionToPinnedIosVersion,
|
||||||
@@ -9,39 +9,9 @@ import {
|
|||||||
resolveGatewayVersionForIosRelease,
|
resolveGatewayVersionForIosRelease,
|
||||||
resolveIosVersion,
|
resolveIosVersion,
|
||||||
} from "../../scripts/lib/ios-version.ts";
|
} 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[] = [];
|
installIosFixtureCleanup();
|
||||||
|
|
||||||
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);
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("resolveIosVersion", () => {
|
describe("resolveIosVersion", () => {
|
||||||
it("parses pinned CalVer versions and derives Apple marketing fields", () => {
|
it("parses pinned CalVer versions and derives Apple marketing fields", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user