From 9e28f5aac2b746f49d2b1625b164d564601ca10e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 13 Mar 2026 18:51:21 +0000 Subject: [PATCH] test: tighten abort signal coverage --- src/infra/abort-signal.test.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/infra/abort-signal.test.ts b/src/infra/abort-signal.test.ts index be32e0d881a..16dae0498e5 100644 --- a/src/infra/abort-signal.test.ts +++ b/src/infra/abort-signal.test.ts @@ -26,4 +26,32 @@ describe("waitForAbortSignal", () => { await task; expect(resolved).toBe(true); }); + + it("registers and removes the abort listener exactly once", async () => { + let handler: (() => void) | undefined; + const addEventListener = ( + _type: string, + listener: () => void, + options?: AddEventListenerOptions, + ) => { + handler = listener; + expect(options).toEqual({ once: true }); + }; + const removeEventListener = (_type: string, listener: () => void) => { + expect(listener).toBe(handler); + removed += 1; + }; + let removed = 0; + + const task = waitForAbortSignal({ + aborted: false, + addEventListener, + removeEventListener, + } as unknown as AbortSignal); + + expect(handler).toBeTypeOf("function"); + handler?.(); + await expect(task).resolves.toBeUndefined(); + expect(removed).toBe(1); + }); });