From 640f6878f61204bf7211cd9f0750b3ab6dee57b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 29 Apr 2020 01:08:02 +0200 Subject: refactor: Deno.listener closes when breaking out of async iterator (#4976) --- cli/js/tests/net_test.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'cli/js/tests') diff --git a/cli/js/tests/net_test.ts b/cli/js/tests/net_test.ts index f5c1f7abd..64edf34ea 100644 --- a/cli/js/tests/net_test.ts +++ b/cli/js/tests/net_test.ts @@ -285,6 +285,42 @@ unitTest( } ); +unitTest( + { perms: { net: true } }, + async function netTcpListenIteratorBreakClosesResource(): Promise { + const promise = createResolvable(); + + async function iterate(listener: Deno.Listener): Promise { + let i = 0; + + for await (const conn of listener) { + conn.close(); + i++; + + if (i > 1) { + break; + } + } + + promise.resolve(); + } + + const addr = { hostname: "127.0.0.1", port: 8888 }; + const listener = Deno.listen(addr); + iterate(listener); + + await new Promise((resolve: () => void, _) => { + setTimeout(resolve, 100); + }); + const conn1 = await Deno.connect(addr); + conn1.close(); + const conn2 = await Deno.connect(addr); + conn2.close(); + + await promise; + } +); + unitTest( { perms: { net: true } }, async function netTcpListenCloseWhileIterating(): Promise { -- cgit v1.2.3