Files
wehub-resource-sync 070959e133
landing-page-staging / Deploy landing page to staging (push) Has been skipped
landing-page-ci / Validate landing page (push) Failing after 4s
visual-baseline / Capture visual baselines (push) Has been cancelled
bake-plugin-previews / Bake plugin previews (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:00:47 +08:00

80 lines
2.5 KiB
TypeScript

import { readFile, rm } from "node:fs/promises";
import { tmpdir } from "node:os";
import { join } from "node:path";
import {
APP_KEYS,
OPEN_DESIGN_SIDECAR_CONTRACT,
SIDECAR_MODES,
SIDECAR_SOURCES,
} from "@open-design/sidecar-proto";
import { resolveAppIpcPath } from "@open-design/sidecar";
import { describe, expect, it } from "vitest";
import { writePackagedDesktopIdentity } from "../src/identity.js";
import type { PackagedNamespacePaths } from "../src/paths.js";
async function pathExists(path: string): Promise<boolean> {
try {
await readFile(path);
return true;
} catch {
return false;
}
}
function fakePaths(root: string): PackagedNamespacePaths {
return {
cacheRoot: join(root, "cache"),
dataRoot: join(root, "data"),
desktopIdentityPath: join(root, "runtime", "desktop-root.json"),
desktopLogPath: join(root, "logs", "desktop", "latest.log"),
desktopLogsRoot: join(root, "logs", "desktop"),
electronSessionDataRoot: join(root, "user-data", "session"),
electronUserDataRoot: join(root, "user-data"),
headlessIdentityPath: join(root, "runtime", "headless-root.json"),
installationRoot: join(root, ".."),
installerObservationRoot: join(root, "data", "observations", "installer"),
logsRoot: join(root, "logs"),
namespaceRoot: root,
resourceRoot: join(root, "resources"),
runtimeRoot: join(root, "runtime"),
updateRoot: join(root, "updates"),
webIdentityPath: join(root, "runtime", "web-root.json"),
};
}
describe("packaged identity markers", () => {
it("can write and close the desktop identity shape at the headless marker path", async () => {
const root = join(tmpdir(), `od-packaged-identity-${process.pid}-${Date.now()}`);
const paths = fakePaths(root);
const stamp = {
app: APP_KEYS.DESKTOP,
ipc: resolveAppIpcPath({
app: APP_KEYS.DESKTOP,
contract: OPEN_DESIGN_SIDECAR_CONTRACT,
namespace: "default",
}),
mode: SIDECAR_MODES.RUNTIME,
namespace: "default",
source: SIDECAR_SOURCES.PACKAGED,
};
try {
const handle = await writePackagedDesktopIdentity({
identityPath: paths.headlessIdentityPath,
paths,
stamp,
});
expect(await pathExists(paths.headlessIdentityPath)).toBe(true);
expect(await pathExists(paths.desktopIdentityPath)).toBe(false);
await handle.close();
expect(await pathExists(paths.headlessIdentityPath)).toBe(false);
} finally {
await rm(root, { force: true, recursive: true });
}
});
});