From 2f8c68ae4d5edc99dd847f466e60dca45475ef8a Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 22 Feb 2026 20:26:28 +0000 Subject: [PATCH] refactor(test): dedupe run-loop signal harness setup --- src/cli/gateway-cli/run-loop.test.ts | 48 +++++++--------------------- 1 file changed, 12 insertions(+), 36 deletions(-) diff --git a/src/cli/gateway-cli/run-loop.test.ts b/src/cli/gateway-cli/run-loop.test.ts index e03073878..286b1544d 100644 --- a/src/cli/gateway-cli/run-loop.test.ts +++ b/src/cli/gateway-cli/run-loop.test.ts @@ -129,31 +129,21 @@ async function waitForStart(started: Promise) { await new Promise((resolve) => setImmediate(resolve)); } +async function createSignaledLoopHarness(exitCallOrder?: string[]) { + const close = vi.fn(async () => {}); + const { start, started } = createSignaledStart(close); + const { runtime, exited } = createRuntimeWithExitSignal(exitCallOrder); + const { loopPromise } = await runLoopWithStart({ start, runtime }); + await waitForStart(started); + return { close, start, runtime, exited, loopPromise }; +} + describe("runGatewayLoop", () => { it("exits 0 on SIGTERM after graceful close", async () => { vi.clearAllMocks(); await withIsolatedSignals(async () => { - const close = vi.fn(async () => {}); - let resolveStarted: (() => void) | null = null; - const started = new Promise((resolve) => { - resolveStarted = resolve; - }); - const start = vi.fn(async () => { - resolveStarted?.(); - return { close }; - }); - const { runtime, exited } = createRuntimeWithExitSignal(); - - vi.resetModules(); - const { runGatewayLoop } = await import("./run-loop.js"); - const _loopPromise = runGatewayLoop({ - start: start as unknown as Parameters[0]["start"], - runtime: runtime as unknown as Parameters[0]["runtime"], - }); - - await started; - await new Promise((resolve) => setImmediate(resolve)); + const { close, runtime, exited } = await createSignaledLoopHarness(); process.emit("SIGTERM"); @@ -259,19 +249,12 @@ describe("runGatewayLoop", () => { pid: 9999, }); - const close = vi.fn(async () => {}); - const { start, started } = createSignaledStart(close); - const exitCallOrder: string[] = []; - const { runtime, exited } = createRuntimeWithExitSignal(exitCallOrder); + const { runtime, exited } = await createSignaledLoopHarness(exitCallOrder); lockRelease.mockImplementation(async () => { exitCallOrder.push("lockRelease"); }); - const { loopPromise: _loopPromise } = await runLoopWithStart({ start, runtime }); - - await waitForStart(started); - process.emit("SIGUSR1"); await exited; @@ -329,14 +312,7 @@ describe("runGatewayLoop", () => { mode: "disabled", }); - const close = vi.fn(async () => {}); - const { start, started } = createSignaledStart(close); - - const { runtime, exited } = createRuntimeWithExitSignal(); - - const { loopPromise: _loopPromise } = await runLoopWithStart({ start, runtime }); - - await waitForStart(started); + const { start, exited } = await createSignaledLoopHarness(); process.emit("SIGUSR1"); await expect(exited).resolves.toBe(1);