From 1d592a9489170cf2032976b51e73e2859fd97ca0 Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Wed, 22 Feb 2023 21:50:26 -0800 Subject: Add leaky test --- test/bun.js/serve.test.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'test') diff --git a/test/bun.js/serve.test.ts b/test/bun.js/serve.test.ts index d5581cf7c..c049aad1a 100644 --- a/test/bun.js/serve.test.ts +++ b/test/bun.js/serve.test.ts @@ -113,6 +113,44 @@ it("request.signal works in trivial case", async () => { ); }); +it("request.signal works in leaky case", async () => { + var aborty = new AbortController(); + var didAbort = false; + var leaky; + await runTest( + { + async fetch(req) { + leaky = req; + expect(didAbort).toBe(false); + aborty.abort(); + await Bun.sleep(2); + return new Response("Test failed!"); + }, + }, + async server => { + try { + const resp = fetch(`http://${server.hostname}:${server.port}`, { signal: aborty.signal }); + + await Bun.sleep(1); + + leaky.signal.addEventListener("abort", () => { + didAbort = true; + }); + + await resp; + + throw new Error("Expected fetch to throw"); + } catch (e: any) { + expect(e.name).toBe("AbortError"); + } + + await Bun.sleep(1); + + expect(didAbort).toBe(true); + }, + ); +}); + it("should work for a file", async () => { const fixture = resolve(import.meta.dir, "./fetch.js.txt"); const textToExpect = readFileSync(fixture, "utf-8"); -- cgit v1.2.3