Files
open-design/tools/pack/tests/mac-identity.test.ts
T
0bf1b6d6b8 [codex] converge release workflows and stable dry-runs (#4390)
* fix(tools-pack): use junctions for Windows standalone peer deps

* fix(desktop): expose IPC during startup

* fix(tools-pack): preserve Windows inspect diagnostics

* fix(tools-pack): report Windows inspect status errors

* fix(packaged): use Electron net fetch for app protocol

* fix(packaged): load Windows renderer from web sidecar

* fix(desktop): show Windows packaged window during startup

* fix(packaged): disable Windows GPU startup

* fix(tools-pack): keep Windows core smoke observable

* fix(packaged): remove Windows startup probes

* fix(tools-pack): trace Windows desktop IPC status

* fix(tools-pack): add Windows IPC diagnose loop

* fix(release): default beta-s Windows updater feed

* chore: clean merged test eof

* refactor(release): unify prerelease channel model

* chore(release): close prerelease doc escape hatches

* refactor(release): converge release channel workflows

* fix(release): install toolchain in metadata jobs

* fix(release): build release package before contracts

* chore(release): bump development version to 0.10.1

* fix(e2e): seed windows packaged smoke runtime config

* fix(release): install toolchain for metadata publish

* fix(release): materialize betas metadata checkout

* chore(release): bump development version to 0.10.2

* fix(release): allow betas metadata cold start from s3

* fix(e2e): support betas packaged update scenarios

* fix(release): pass betas channel into packaged smoke

* fix(release): set betas channel during self-hosted builds

* fix(release): verify counted channel reservations

* fix(release): use pnpm cmd for betas windows publish

* fix(release): add betas manifest artifact fallback

* fix(release): skip beta-s public metadata fetch

* fix(release): read beta-s manifests from storage

* fix(release): cache beta windows tools-pack builds

* fix(release): inline beta mac tools-pack builds

* fix(pack): deep sign unsigned mac bundles

* docs(pack): document payload-first beta updater validation

* fix(release): align preview tools-pack cache flow

* fix(release): align prerelease tools-pack cache flow

* fix(release): pass github token to prerelease metadata

* fix(release): setup pnpm before feishu notify

* fix(release): add stable dry-run prepublish flow

* fix(release): accept completed prerelease metadata gate

* fix(release): require stable release branches

* fix(release): converge r2 access checks

* fix(updater): use release channel parser for defaults

* fix(updater): harden windows payload relaunch

* fix(release): converge updater smoke fixture contract

* test(e2e): require silent updater fixture output

* fix(release): align stable windows smoke build path

* fix(ci): include release workspace in validation

* fix(ci): repair release validation lanes

Generated-By: looper 0.9.10+codex.autoclean (runner=fixer, agent=codex)

* fix(ci): restore zero-install Feishu notification

Generated-By: looper 0.9.10+codex.autoclean (runner=fixer, agent=codex)

---------

Co-authored-by: Looper <looper@noreply.github.com>
2026-06-23 06:13:21 +00:00

107 lines
4.0 KiB
TypeScript

import { join } from "node:path";
import { describe, expect, it } from "vitest";
import type { ToolPackConfig } from "../src/config.js";
import { resolveMacInstallIdentity } from "../src/mac/identity.js";
import { resolveMacPaths } from "../src/mac/paths.js";
function makeConfig(root: string, namespace: string): ToolPackConfig {
return {
containerized: false,
electronBuilderCliPath: "/x/electron-builder/cli.js",
electronDistPath: "/x/electron/dist",
electronVersion: "41.3.0",
macCompression: "normal",
namespace,
platform: "mac",
portable: true,
removeData: false,
removeLogs: false,
removeProductUserData: false,
removeSidecars: false,
requireVelaCli: false,
roots: {
output: {
appBuilderRoot: join(root, ".tmp", "tools-pack", "out", "mac", "namespaces", namespace, "builder"),
namespaceRoot: join(root, ".tmp", "tools-pack", "out", "mac", "namespaces", namespace),
platformRoot: join(root, ".tmp", "tools-pack", "out", "mac"),
root: join(root, ".tmp", "tools-pack", "out"),
},
runtime: {
namespaceBaseRoot: join(root, ".tmp", "tools-pack", "runtime", "mac", "namespaces"),
namespaceRoot: join(root, ".tmp", "tools-pack", "runtime", "mac", "namespaces", namespace),
},
cacheRoot: join(root, ".tmp", "tools-pack", "cache"),
toolPackRoot: join(root, ".tmp", "tools-pack"),
},
signed: false,
silent: true,
to: "dmg",
webOutputMode: "standalone",
workspaceRoot: root,
};
}
describe("resolveMacInstallIdentity", () => {
it("keeps stable builds on the canonical mac identity", () => {
expect(resolveMacInstallIdentity(makeConfig("/work", "release-stable"))).toMatchObject({
appId: "io.open-design.desktop",
installerTitle: "Open Design",
productName: "Open Design",
publicAppBundleName: "Open Design.app",
systemAppBundleName: "Open Design.app",
});
});
it("uses first-class beta app identity for beta release namespaces", () => {
const config = makeConfig("/work", "release-beta");
expect(resolveMacInstallIdentity(config)).toEqual({
appId: "io.open-design.desktop.beta",
executableName: "Open Design Beta",
installerTitle: "Open Design Beta",
productName: "Open Design Beta",
publicAppBundleName: "Open Design Beta.app",
systemAppBundleName: "Open Design Beta.app",
});
expect(resolveMacPaths(config).appPath).toMatch(/Open Design Beta\.app$/);
});
it("uses first-class preview app identity for preview release namespaces", () => {
const config = makeConfig("/work", "release-preview");
expect(resolveMacInstallIdentity(config)).toEqual({
appId: "io.open-design.desktop.preview",
executableName: "Open Design Preview",
installerTitle: "Open Design Preview",
productName: "Open Design Preview",
publicAppBundleName: "Open Design Preview.app",
systemAppBundleName: "Open Design Preview.app",
});
expect(resolveMacPaths(config).appPath).toMatch(/Open Design Preview\.app$/);
});
it("uses first-class prerelease app identity for prerelease release versions and namespaces", () => {
const prereleaseVersionConfig = {
...makeConfig("/work", "release-stable"),
appVersion: "0.8.0-prerelease.2",
};
const prereleaseNamespaceConfig = makeConfig("/work", "release-prerelease");
expect(resolveMacInstallIdentity(prereleaseVersionConfig)).toEqual({
appId: "io.open-design.desktop.prerelease",
executableName: "Open Design Prerelease",
installerTitle: "Open Design Prerelease",
productName: "Open Design Prerelease",
publicAppBundleName: "Open Design Prerelease.app",
systemAppBundleName: "Open Design Prerelease.app",
});
expect(resolveMacPaths(prereleaseVersionConfig).appPath).toMatch(/Open Design Prerelease\.app$/);
expect(resolveMacInstallIdentity(prereleaseNamespaceConfig)).toMatchObject({
productName: "Open Design Prerelease",
publicAppBundleName: "Open Design Prerelease.app",
});
});
});