summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2022-04-22 16:19:08 +0530
committerGitHub <noreply@github.com>2022-04-22 16:19:08 +0530
commit57f7e07c13a1a692602022af4fc32c6ac352bb72 (patch)
treee2b6bf271ebda2aecf158b25c9d6c466461549dd /cli
parent2724235ec798f1fbf8fb5bd291615987ac4b919e (diff)
Reland "perf(http): optimize ReadableStreams backed by a resource" (#14346)
Diffstat (limited to 'cli')
-rw-r--r--cli/tests/unit/http_test.ts41
1 files changed, 41 insertions, 0 deletions
diff --git a/cli/tests/unit/http_test.ts b/cli/tests/unit/http_test.ts
index beb955781..c55c0372d 100644
--- a/cli/tests/unit/http_test.ts
+++ b/cli/tests/unit/http_test.ts
@@ -854,6 +854,47 @@ Deno.test({ permissions: { net: true } }, async function httpServerPanic() {
listener.close();
});
+Deno.test(
+ { permissions: { net: true, write: true, read: true } },
+ async function httpServerClosedStream() {
+ const listener = Deno.listen({ port: 4502 });
+
+ const client = await Deno.connect({ port: 4502 });
+ await client.write(new TextEncoder().encode(
+ `GET / HTTP/1.0\r\n\r\n`,
+ ));
+
+ const conn = await listener.accept();
+ const httpConn = Deno.serveHttp(conn);
+ const ev = await httpConn.nextRequest();
+ const { respondWith } = ev!;
+
+ const tmpFile = await Deno.makeTempFile();
+ const file = await Deno.open(tmpFile, { write: true, read: true });
+ await file.write(new TextEncoder().encode("hello"));
+
+ const reader = await file.readable.getReader();
+ while (true) {
+ const { done, value } = await reader.read();
+ if (done) break;
+ assert(value);
+ }
+
+ let didThrow = false;
+ try {
+ await respondWith(new Response(file.readable));
+ } catch {
+ // pass
+ didThrow = true;
+ }
+
+ assert(didThrow);
+ httpConn.close();
+ listener.close();
+ client.close();
+ },
+);
+
// https://github.com/denoland/deno/issues/11595
Deno.test(
{ permissions: { net: true } },