codex-proxy / packages /electron /__tests__ /prepare-pack.test.ts
icebear0828
test: add electron package tests (33 cases)
325c8ea
raw
history blame
3.07 kB
/**
* Tests for electron/prepare-pack.mjs
*
* Verifies that root-level resources (config/, public/, etc.) are correctly
* copied into packages/electron/ before electron-builder runs, and cleaned
* up afterward.
*/
import { describe, it, expect, beforeEach, afterEach } from "vitest";
import { existsSync, mkdirSync, writeFileSync, rmSync, readFileSync } from "fs";
import { resolve } from "path";
import { execFileSync } from "child_process";
const PKG_DIR = resolve(import.meta.dirname, "..");
const ROOT_DIR = resolve(PKG_DIR, "..", "..");
const SCRIPT = resolve(PKG_DIR, "electron", "prepare-pack.mjs");
// Directories that prepare-pack copies from root into packages/electron/
const DIRS = ["config", "public", "public-desktop", "bin"];
describe("prepare-pack.mjs", () => {
// Clean up any leftover copies before/after each test
function cleanCopies(): void {
for (const dir of DIRS) {
const dest = resolve(PKG_DIR, dir);
// Only remove if it's a copy (not the root original)
if (existsSync(dest) && resolve(dest) !== resolve(ROOT_DIR, dir)) {
rmSync(dest, { recursive: true });
}
}
}
beforeEach(cleanCopies);
afterEach(cleanCopies);
it("copies root directories into packages/electron/", () => {
execFileSync("node", [SCRIPT], { cwd: PKG_DIR });
for (const dir of DIRS) {
const rootDir = resolve(ROOT_DIR, dir);
const copyDir = resolve(PKG_DIR, dir);
if (existsSync(rootDir)) {
expect(existsSync(copyDir)).toBe(true);
}
}
});
it("copies config/ with correct content", () => {
execFileSync("node", [SCRIPT], { cwd: PKG_DIR });
const rootConfig = resolve(ROOT_DIR, "config", "default.yaml");
const copyConfig = resolve(PKG_DIR, "config", "default.yaml");
if (existsSync(rootConfig)) {
expect(existsSync(copyConfig)).toBe(true);
expect(readFileSync(copyConfig, "utf-8")).toBe(
readFileSync(rootConfig, "utf-8"),
);
}
});
it("--clean removes copied directories", () => {
// First copy
execFileSync("node", [SCRIPT], { cwd: PKG_DIR });
// Verify at least config exists
const copyConfig = resolve(PKG_DIR, "config");
expect(existsSync(copyConfig)).toBe(true);
// Then clean
execFileSync("node", [SCRIPT, "--clean"], { cwd: PKG_DIR });
for (const dir of DIRS) {
expect(existsSync(resolve(PKG_DIR, dir))).toBe(false);
}
});
it("skips missing root directories without error", () => {
// Create a temp directory that doesn't have all root dirs
// The script should warn but not throw
const result = execFileSync("node", [SCRIPT], {
cwd: PKG_DIR,
encoding: "utf-8",
stdio: ["pipe", "pipe", "pipe"],
});
// Should succeed without throwing
expect(result).toBeDefined();
});
it("--clean is idempotent (no error when dirs already absent)", () => {
// Clean without prior copy — should not throw
expect(() => {
execFileSync("node", [SCRIPT, "--clean"], { cwd: PKG_DIR });
}).not.toThrow();
});
});