summaryrefslogtreecommitdiff
path: root/cli/tests/no_mem_cache.js
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-11-27 14:19:24 +0100
committerGitHub <noreply@github.com>2020-11-27 14:19:24 +0100
commit22f951aa67c5b677d156ec338f71714cf2d4ddb2 (patch)
tree58537dffb4aa0f3c3b2a348c99466cb89919c835 /cli/tests/no_mem_cache.js
parent28869a632d190dc29d78738bc5e90eadf99bc824 (diff)
fix: panic in worker when closing at top level (#8510)
Fixes panic occurring in worker when "self.close()" is called at the top level, ie. worker shuts down while module evaluation promise hasn't yet resolved.
Diffstat (limited to 'cli/tests/no_mem_cache.js')
-rw-r--r--cli/tests/no_mem_cache.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/cli/tests/no_mem_cache.js b/cli/tests/no_mem_cache.js
new file mode 100644
index 000000000..a486732b6
--- /dev/null
+++ b/cli/tests/no_mem_cache.js
@@ -0,0 +1,33 @@
+const fixtureFile = await Deno.makeTempFile();
+let prefix = "file://";
+if (Deno.build.os == "windows") {
+ prefix += "/";
+}
+const fixtureUrl = new URL(`${prefix}${fixtureFile}`);
+let resolve;
+
+let p = new Promise((res) => resolve = res);
+
+await Deno.writeTextFile(fixtureUrl, `self.postMessage("hello");\n`);
+
+const workerA = new Worker(fixtureUrl.href, { type: "module" });
+workerA.onmessage = (msg) => {
+ console.log(msg.data);
+ resolve();
+};
+
+await p;
+workerA.terminate();
+
+p = new Promise((res) => resolve = res);
+
+await Deno.writeTextFile(fixtureUrl, `self.postMessage("goodbye");\n`);
+
+const workerB = new Worker(fixtureUrl.href, { type: "module" });
+workerB.onmessage = (msg) => {
+ console.log(msg.data);
+ resolve();
+};
+
+await p;
+workerB.terminate();