72 lines
1.9 KiB
TypeScript
72 lines
1.9 KiB
TypeScript
|
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
||
|
|
|
||
|
|
const access = vi.fn();
|
||
|
|
const realpath = vi.fn();
|
||
|
|
|
||
|
|
vi.mock("node:fs/promises", () => ({
|
||
|
|
default: { access, realpath },
|
||
|
|
access,
|
||
|
|
realpath,
|
||
|
|
}));
|
||
|
|
|
||
|
|
import { resolveGatewayProgramArguments } from "./program-args.js";
|
||
|
|
|
||
|
|
const originalArgv = [...process.argv];
|
||
|
|
|
||
|
|
afterEach(() => {
|
||
|
|
process.argv = [...originalArgv];
|
||
|
|
vi.resetAllMocks();
|
||
|
|
});
|
||
|
|
|
||
|
|
describe("resolveGatewayProgramArguments", () => {
|
||
|
|
it("uses realpath-resolved dist entry when running via npx shim", async () => {
|
||
|
|
process.argv = [
|
||
|
|
"node",
|
||
|
|
"/tmp/.npm/_npx/63c3/node_modules/.bin/clawdbot",
|
||
|
|
];
|
||
|
|
realpath.mockResolvedValue(
|
||
|
|
"/tmp/.npm/_npx/63c3/node_modules/clawdbot/dist/entry.js",
|
||
|
|
);
|
||
|
|
access.mockImplementation(async (target: string) => {
|
||
|
|
if (target === "/tmp/.npm/_npx/63c3/node_modules/clawdbot/dist/entry.js") {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
throw new Error("missing");
|
||
|
|
});
|
||
|
|
|
||
|
|
const result = await resolveGatewayProgramArguments({ port: 18789 });
|
||
|
|
|
||
|
|
expect(result.programArguments).toEqual([
|
||
|
|
process.execPath,
|
||
|
|
"/tmp/.npm/_npx/63c3/node_modules/clawdbot/dist/entry.js",
|
||
|
|
"gateway-daemon",
|
||
|
|
"--port",
|
||
|
|
"18789",
|
||
|
|
]);
|
||
|
|
});
|
||
|
|
|
||
|
|
it("falls back to node_modules package dist when .bin path is not resolved", async () => {
|
||
|
|
process.argv = [
|
||
|
|
"node",
|
||
|
|
"/tmp/.npm/_npx/63c3/node_modules/.bin/clawdbot",
|
||
|
|
];
|
||
|
|
realpath.mockRejectedValue(new Error("no realpath"));
|
||
|
|
access.mockImplementation(async (target: string) => {
|
||
|
|
if (target === "/tmp/.npm/_npx/63c3/node_modules/clawdbot/dist/index.js") {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
throw new Error("missing");
|
||
|
|
});
|
||
|
|
|
||
|
|
const result = await resolveGatewayProgramArguments({ port: 18789 });
|
||
|
|
|
||
|
|
expect(result.programArguments).toEqual([
|
||
|
|
process.execPath,
|
||
|
|
"/tmp/.npm/_npx/63c3/node_modules/clawdbot/dist/index.js",
|
||
|
|
"gateway-daemon",
|
||
|
|
"--port",
|
||
|
|
"18789",
|
||
|
|
]);
|
||
|
|
});
|
||
|
|
});
|