From 9c0446567bd8c6441e0ced61eeb4b0e5604ac21e Mon Sep 17 00:00:00 2001 From: Matt Mastracci Date: Tue, 16 Apr 2024 15:14:59 -0600 Subject: fix(cli): Identify and fix a test deadlock (#23411) If a worker tried to flush large amounts of data right as the test was ending, it could cause the flush sync marker to get lost. --- tests/specs/test/worker_large_output/__test__.jsonc | 4 ++++ tests/specs/test/worker_large_output/main.js | 15 +++++++++++++++ tests/specs/test/worker_large_output/main.out | 4 ++++ 3 files changed, 23 insertions(+) create mode 100644 tests/specs/test/worker_large_output/__test__.jsonc create mode 100644 tests/specs/test/worker_large_output/main.js create mode 100644 tests/specs/test/worker_large_output/main.out (limited to 'tests') diff --git a/tests/specs/test/worker_large_output/__test__.jsonc b/tests/specs/test/worker_large_output/__test__.jsonc new file mode 100644 index 000000000..9e6533e8c --- /dev/null +++ b/tests/specs/test/worker_large_output/__test__.jsonc @@ -0,0 +1,4 @@ +{ + "args": "test main.js", + "output": "main.out" +} diff --git a/tests/specs/test/worker_large_output/main.js b/tests/specs/test/worker_large_output/main.js new file mode 100644 index 000000000..0941e60f3 --- /dev/null +++ b/tests/specs/test/worker_large_output/main.js @@ -0,0 +1,15 @@ +// Regression test for workers that post large amounts of output as a test is ending. This +// test should not deadlock, though the output is undefined. +Deno.test(async function workerOutput() { + console.log("Booting worker"); + const code = + "self.postMessage(0); console.log(`hello from worker\n`.repeat(60000));"; + const worker = new Worker(URL.createObjectURL(new Blob([code])), { + type: "module", + }); + await new Promise((r) => + worker.addEventListener("message", () => { + r(); + }) + ); +}); diff --git a/tests/specs/test/worker_large_output/main.out b/tests/specs/test/worker_large_output/main.out new file mode 100644 index 000000000..ed130e0fe --- /dev/null +++ b/tests/specs/test/worker_large_output/main.out @@ -0,0 +1,4 @@ +[WILDCARD] + +ok | 1 passed | 0 failed ([WILDCARD]) + -- cgit v1.2.3