feat: add daemon service management
This commit is contained in:
@@ -13,7 +13,9 @@ const forceFreePortAndWait = vi.fn(async () => ({
|
||||
waitedMs: 0,
|
||||
escalatedToSigkill: false,
|
||||
}));
|
||||
const serviceInstall = vi.fn().mockResolvedValue(undefined);
|
||||
const serviceStop = vi.fn().mockResolvedValue(undefined);
|
||||
const serviceUninstall = vi.fn().mockResolvedValue(undefined);
|
||||
const serviceRestart = vi.fn().mockResolvedValue(undefined);
|
||||
const serviceIsLoaded = vi.fn().mockResolvedValue(true);
|
||||
|
||||
@@ -82,8 +84,8 @@ vi.mock("../daemon/service.js", () => ({
|
||||
label: "LaunchAgent",
|
||||
loadedText: "loaded",
|
||||
notLoadedText: "not loaded",
|
||||
install: vi.fn(),
|
||||
uninstall: vi.fn(),
|
||||
install: serviceInstall,
|
||||
uninstall: serviceUninstall,
|
||||
stop: serviceStop,
|
||||
restart: serviceRestart,
|
||||
isLoaded: serviceIsLoaded,
|
||||
@@ -91,6 +93,12 @@ vi.mock("../daemon/service.js", () => ({
|
||||
}),
|
||||
}));
|
||||
|
||||
vi.mock("../daemon/program-args.js", () => ({
|
||||
resolveGatewayProgramArguments: async () => ({
|
||||
programArguments: ["/bin/node", "cli", "gateway-daemon", "--port", "18789"],
|
||||
}),
|
||||
}));
|
||||
|
||||
describe("gateway-cli coverage", () => {
|
||||
it("registers call/health/status/send/agent commands and routes to callGateway", async () => {
|
||||
runtimeLogs.length = 0;
|
||||
@@ -264,6 +272,30 @@ describe("gateway-cli coverage", () => {
|
||||
expect(serviceRestart).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("supports gateway install/uninstall/start via daemon helpers", async () => {
|
||||
runtimeLogs.length = 0;
|
||||
runtimeErrors.length = 0;
|
||||
serviceInstall.mockClear();
|
||||
serviceUninstall.mockClear();
|
||||
serviceRestart.mockClear();
|
||||
serviceIsLoaded.mockResolvedValueOnce(false);
|
||||
|
||||
const { registerGatewayCli } = await import("./gateway-cli.js");
|
||||
const program = new Command();
|
||||
program.exitOverride();
|
||||
registerGatewayCli(program);
|
||||
|
||||
await program.parseAsync(["gateway", "install", "--port", "18789"], {
|
||||
from: "user",
|
||||
});
|
||||
await program.parseAsync(["gateway", "uninstall"], { from: "user" });
|
||||
await program.parseAsync(["gateway", "start"], { from: "user" });
|
||||
|
||||
expect(serviceInstall).toHaveBeenCalledTimes(1);
|
||||
expect(serviceUninstall).toHaveBeenCalledTimes(1);
|
||||
expect(serviceRestart).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("prints stop hints on GatewayLockError when service is loaded", async () => {
|
||||
runtimeLogs.length = 0;
|
||||
runtimeErrors.length = 0;
|
||||
|
||||
Reference in New Issue
Block a user