67 lines
2.3 KiB
TypeScript
67 lines
2.3 KiB
TypeScript
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import path from "node:path";
|
|
import { describe, expect, it } from "vitest";
|
|
import { main } from "./node-entrypoint-runner";
|
|
|
|
declare global {
|
|
// eslint-disable-next-line no-var
|
|
var __PASEO_NODE_ENTRYPOINT_RUNNER_FIXTURE__:
|
|
| {
|
|
argv: string[];
|
|
electronRunAsNode: string | undefined;
|
|
electronNoAttachConsole: string | undefined;
|
|
}
|
|
| undefined;
|
|
}
|
|
|
|
describe("node-entrypoint-runner", () => {
|
|
it("preserves Electron node-mode env before loading the target entrypoint", async () => {
|
|
const originalArgv = process.argv;
|
|
const originalRunAsNode = process.env.ELECTRON_RUN_AS_NODE;
|
|
const originalNoAttachConsole = process.env.ELECTRON_NO_ATTACH_CONSOLE;
|
|
const originalFixture = globalThis.__PASEO_NODE_ENTRYPOINT_RUNNER_FIXTURE__;
|
|
const fixtureDir = mkdtempSync(path.join(tmpdir(), "paseo-node-entrypoint-runner-"));
|
|
const fixturePath = path.join(fixtureDir, "fixture.mjs");
|
|
writeFileSync(
|
|
fixturePath,
|
|
`
|
|
globalThis.__PASEO_NODE_ENTRYPOINT_RUNNER_FIXTURE__ = {
|
|
argv: process.argv,
|
|
electronRunAsNode: process.env.ELECTRON_RUN_AS_NODE,
|
|
electronNoAttachConsole: process.env.ELECTRON_NO_ATTACH_CONSOLE,
|
|
};
|
|
`,
|
|
);
|
|
|
|
process.argv = ["Paseo", "runner", "node-script", fixturePath, "daemon", "start"];
|
|
process.env.ELECTRON_RUN_AS_NODE = "1";
|
|
process.env.ELECTRON_NO_ATTACH_CONSOLE = "1";
|
|
delete globalThis.__PASEO_NODE_ENTRYPOINT_RUNNER_FIXTURE__;
|
|
|
|
try {
|
|
await main();
|
|
|
|
expect(globalThis.__PASEO_NODE_ENTRYPOINT_RUNNER_FIXTURE__).toEqual({
|
|
argv: ["Paseo", fixturePath, "daemon", "start"],
|
|
electronRunAsNode: "1",
|
|
electronNoAttachConsole: "1",
|
|
});
|
|
} finally {
|
|
process.argv = originalArgv;
|
|
if (originalRunAsNode === undefined) {
|
|
delete process.env.ELECTRON_RUN_AS_NODE;
|
|
} else {
|
|
process.env.ELECTRON_RUN_AS_NODE = originalRunAsNode;
|
|
}
|
|
if (originalNoAttachConsole === undefined) {
|
|
delete process.env.ELECTRON_NO_ATTACH_CONSOLE;
|
|
} else {
|
|
process.env.ELECTRON_NO_ATTACH_CONSOLE = originalNoAttachConsole;
|
|
}
|
|
globalThis.__PASEO_NODE_ENTRYPOINT_RUNNER_FIXTURE__ = originalFixture;
|
|
rmSync(fixtureDir, { recursive: true, force: true });
|
|
}
|
|
});
|
|
});
|