aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-02-22 21:50:26 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-02-22 21:50:39 -0800
commit1d592a9489170cf2032976b51e73e2859fd97ca0 (patch)
tree33ac4a276108057e207bb65e94c38c15f39d7946 /test/bun.js
parent17efd52ba3e96aac089a4a8ba893dfda00a80abf (diff)
downloadbun-1d592a9489170cf2032976b51e73e2859fd97ca0.tar.gz
bun-1d592a9489170cf2032976b51e73e2859fd97ca0.tar.zst
bun-1d592a9489170cf2032976b51e73e2859fd97ca0.zip
Add leaky test
Diffstat (limited to 'test/bun.js')
-rw-r--r--test/bun.js/serve.test.ts38
1 files changed, 38 insertions, 0 deletions
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");