summaryrefslogtreecommitdiff
path: root/cli/tests/unit/serve_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/unit/serve_test.ts')
-rw-r--r--cli/tests/unit/serve_test.ts33
1 files changed, 32 insertions, 1 deletions
diff --git a/cli/tests/unit/serve_test.ts b/cli/tests/unit/serve_test.ts
index 2bd2314b7..15dc84a28 100644
--- a/cli/tests/unit/serve_test.ts
+++ b/cli/tests/unit/serve_test.ts
@@ -15,7 +15,6 @@ import {
deferred,
fail,
} from "./test_util.ts";
-import { consoleSize } from "../../../runtime/js/40_tty.js";
const {
upgradeHttpRaw,
@@ -665,6 +664,38 @@ Deno.test({ permissions: { net: true } }, async function httpServerClose() {
await server;
});
+// https://github.com/denoland/deno/issues/15427
+Deno.test({ permissions: { net: true } }, async function httpServerCloseGet() {
+ const ac = new AbortController();
+ const listeningPromise = deferred();
+ const requestPromise = deferred();
+ const responsePromise = deferred();
+ const server = Deno.serve({
+ handler: async () => {
+ requestPromise.resolve();
+ await new Promise((r) => setTimeout(r, 500));
+ responsePromise.resolve();
+ return new Response("ok");
+ },
+ port: 4501,
+ signal: ac.signal,
+ onListen: onListen(listeningPromise),
+ onError: createOnErrorCb(ac),
+ });
+ await listeningPromise;
+ const conn = await Deno.connect({ port: 4501 });
+ const encoder = new TextEncoder();
+ const body =
+ `GET / HTTP/1.1\r\nHost: example.domain\r\nConnection: close\r\n\r\n`;
+ const writeResult = await conn.write(encoder.encode(body));
+ assertEquals(body.length, writeResult);
+ await requestPromise;
+ conn.close();
+ await responsePromise;
+ ac.abort();
+ await server;
+});
+
// FIXME:
Deno.test(
{ permissions: { net: true } },