Files
edgeever/scripts/plan-native-release.test.mjs
T
tianma-if 2d784297ff fix(desktop): ship complete macOS ICNS so Dock never blanks
Prebuild a full iconutil ICNS (including 1024) instead of converting a lone
512 PWA PNG, validate Dock-critical types at package verify time, and set the
Dock icon at runtime as a Launch Services cache fallback.
2026-08-05 19:22:00 +08:00

63 lines
2.0 KiB
JavaScript

import { describe, expect, test } from "bun:test";
import { planNativeRelease } from "./plan-native-release.mjs";
describe("native release planning", () => {
test("does not rebuild Android for root scripts, versions, or documentation", () => {
expect(
planNativeRelease("mobile", [
"package.json",
"AGENTS.md",
"apps/web/src/app/App.tsx",
"apps/desktop/package.json",
]),
).toEqual({ rebuild: false, relevantChanges: [] });
});
test("rebuilds Android for mobile, shared runtime, dependency, or build changes", () => {
const changedFiles = [
"apps/mobile/src/screens/LoginScreen.tsx",
"packages/shared/src/index.ts",
"bun.lock",
"scripts/build-android-local.sh",
"scripts/verify-android-apk-signature.mjs",
".github/workflows/mobile-build.yml",
];
expect(planNativeRelease("mobile", changedFiles)).toEqual({
rebuild: true,
relevantChanges: changedFiles,
});
});
test("rebuilds desktop for its embedded Web renderer and shared runtime", () => {
const changedFiles = [
"apps/web/src/app/App.tsx",
"apps/desktop/src/main/index.mjs",
"packages/shared/src/index.ts",
];
expect(planNativeRelease("desktop", changedFiles)).toEqual({
rebuild: true,
relevantChanges: changedFiles,
});
});
test("rebuilds desktop when its architecture packaging pipeline changes", () => {
const changedFiles = [
".github/workflows/desktop-build.yml",
"scripts/create-mac-update-metadata.mjs",
"scripts/prepare-desktop-icons.mjs",
"scripts/desktop-icns.mjs",
"scripts/run-desktop-builder.mjs",
];
expect(planNativeRelease("desktop", changedFiles)).toEqual({
rebuild: true,
relevantChanges: changedFiles,
});
});
test("does not rebuild desktop for release notes or a root version bump alone", () => {
expect(
planNativeRelease("desktop", ["package.json", "AGENTS.md"]),
).toEqual({ rebuild: false, relevantChanges: [] });
});
});