Skip to content

Commit

Permalink
chore: more explicit logic in test
Browse files Browse the repository at this point in the history
  • Loading branch information
Thesephi committed Dec 3, 2024
1 parent 19f37f7 commit 8d7104e
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
28 changes: 24 additions & 4 deletions application.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1116,7 +1116,10 @@ Deno.test({
const { signal } = controller;
const p = app.listen({ signal });
controller.abort();
assertRejects(async () => await p, "aborted prematurely before 'listen' event");
assertRejects(
async () => await p,
"aborted prematurely before 'listen' event",
);
teardown();
},
});
Expand All @@ -1130,10 +1133,27 @@ Deno.test({
ctx.response.body = "hello world";
});
const { signal } = controller;
app.addEventListener("listen", () => controller.abort())
const p = app.listen({ signal });
await p;
teardown();
app.addEventListener("listen", async () => controller.abort());
const GRACEFUL_TIME = 1000;
let timer: number | undefined;
const raceResult = await Promise.race([
new Promise(async (resolve) => {
await p;
clearTimeout(timer);
resolve("resolved cleanly");
}),
new Promise((resolve) =>
timer = setTimeout(
() => resolve("likely forever pending"),
GRACEFUL_TIME,
)
),
]);
assert(
raceResult === "resolved cleanly",
`'listen promise' should resolve before ${GRACEFUL_TIME} ms`,
);
},
});

Expand Down
8 changes: 6 additions & 2 deletions http_server_native.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,9 @@ export class Server<AS extends State = Record<string, any>>
const { promise, resolve } = createPromiseWithResolvers<Listener>();
if (signal?.aborted) {
// if user somehow aborted before `listen` is invoked, we throw
return Promise.reject(new Error("aborted prematurely before 'listen' event"));
return Promise.reject(
new Error("aborted prematurely before 'listen' event"),
);
}
this.#stream = new ReadableStream<NativeRequest>({
start: (controller) => {
Expand All @@ -102,7 +104,9 @@ export class Server<AS extends State = Record<string, any>>
});
// closinng stream, so that the Application listen promise can resolve itself
// https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController/close
signal?.addEventListener("abort", () => controller.close(), { once: true });
signal?.addEventListener("abort", () => controller.close(), {
once: true,
});
},
});

Expand Down

0 comments on commit 8d7104e

Please sign in to comment.