diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/tests/integration/bench_tests.rs | 5 | ||||
-rw-r--r-- | cli/tests/integration/test_tests.rs | 5 | ||||
-rw-r--r-- | cli/tests/testdata/bench/before_unload_prevent_default.out | 7 | ||||
-rw-r--r-- | cli/tests/testdata/bench/before_unload_prevent_default.ts | 6 | ||||
-rw-r--r-- | cli/tests/testdata/test/before_unload_prevent_default.out | 5 | ||||
-rw-r--r-- | cli/tests/testdata/test/before_unload_prevent_default.ts | 6 | ||||
-rw-r--r-- | cli/tools/bench.rs | 9 | ||||
-rw-r--r-- | cli/tools/test.rs | 9 |
8 files changed, 40 insertions, 12 deletions
diff --git a/cli/tests/integration/bench_tests.rs b/cli/tests/integration/bench_tests.rs index 16ac5852e..5b7361b30 100644 --- a/cli/tests/integration/bench_tests.rs +++ b/cli/tests/integration/bench_tests.rs @@ -114,6 +114,11 @@ itest!(finally_timeout { output: "bench/finally_timeout.out", }); +itest!(before_unload_prevent_default { + args: "bench --quiet bench/before_unload_prevent_default.ts", + output: "bench/before_unload_prevent_default.out", +}); + itest!(group_baseline { args: "bench bench/group_baseline.ts", exit_code: 0, diff --git a/cli/tests/integration/test_tests.rs b/cli/tests/integration/test_tests.rs index 0dea3b844..04966f4ee 100644 --- a/cli/tests/integration/test_tests.rs +++ b/cli/tests/integration/test_tests.rs @@ -361,6 +361,11 @@ itest!(test_with_custom_jsx { output: "test/hello_world.out", }); +itest!(before_unload_prevent_default { + args: "test --quiet test/before_unload_prevent_default.ts", + output: "test/before_unload_prevent_default.out", +}); + #[test] fn captured_output() { let context = TestContext::default(); diff --git a/cli/tests/testdata/bench/before_unload_prevent_default.out b/cli/tests/testdata/bench/before_unload_prevent_default.out new file mode 100644 index 000000000..916681625 --- /dev/null +++ b/cli/tests/testdata/bench/before_unload_prevent_default.out @@ -0,0 +1,7 @@ +cpu: [WILDCARD] +runtime: deno [WILDCARD] + +[WILDCARD]/before_unload_prevent_default.ts +benchmark time (avg) (min … max) p75 p99 p995 +------------------------------------------------- ----------------------------- +foo [WILDCARD] [WILDCARD]/iter[WILDCARD]([WILDCARD] … [WILDCARD]) [WILDCARD] diff --git a/cli/tests/testdata/bench/before_unload_prevent_default.ts b/cli/tests/testdata/bench/before_unload_prevent_default.ts new file mode 100644 index 000000000..2759d4659 --- /dev/null +++ b/cli/tests/testdata/bench/before_unload_prevent_default.ts @@ -0,0 +1,6 @@ +addEventListener("beforeunload", (e) => { + // The worker should be killed once benchmarks are done regardless of this. + e.preventDefault(); +}); + +Deno.bench("foo", () => {}); diff --git a/cli/tests/testdata/test/before_unload_prevent_default.out b/cli/tests/testdata/test/before_unload_prevent_default.out new file mode 100644 index 000000000..09da32ff9 --- /dev/null +++ b/cli/tests/testdata/test/before_unload_prevent_default.out @@ -0,0 +1,5 @@ +running 1 test from [WILDCARD]/before_unload_prevent_default.ts +foo ... ok ([WILDCARD]) + +ok | 1 passed | 0 failed ([WILDCARD]) + diff --git a/cli/tests/testdata/test/before_unload_prevent_default.ts b/cli/tests/testdata/test/before_unload_prevent_default.ts new file mode 100644 index 000000000..421ded520 --- /dev/null +++ b/cli/tests/testdata/test/before_unload_prevent_default.ts @@ -0,0 +1,6 @@ +addEventListener("beforeunload", (e) => { + // The worker should be killed once tests are done regardless of this. + e.preventDefault(); +}); + +Deno.test("foo", () => {}); diff --git a/cli/tools/bench.rs b/cli/tools/bench.rs index aa5bd044d..3d5f99aba 100644 --- a/cli/tools/bench.rs +++ b/cli/tools/bench.rs @@ -498,12 +498,9 @@ async fn bench_specifier( sender.send(BenchEvent::Result(desc.id, result))?; } - loop { - if !worker.dispatch_beforeunload_event(located_script_name!())? { - break; - } - worker.run_event_loop(false).await?; - } + // Ignore `defaultPrevented` of the `beforeunload` event. We don't allow the + // event loop to continue beyond what's needed to await results. + worker.dispatch_beforeunload_event(located_script_name!())?; worker.dispatch_unload_event(located_script_name!())?; Ok(()) } diff --git a/cli/tools/test.rs b/cli/tools/test.rs index 847260352..50e220a46 100644 --- a/cli/tools/test.rs +++ b/cli/tools/test.rs @@ -1033,12 +1033,9 @@ pub async fn test_specifier( sender.send(TestEvent::Result(desc.id, result, elapsed as u64))?; } - loop { - if !worker.dispatch_beforeunload_event(located_script_name!())? { - break; - } - worker.run_event_loop(false).await?; - } + // Ignore `defaultPrevented` of the `beforeunload` event. We don't allow the + // event loop to continue beyond what's needed to await results. + worker.dispatch_beforeunload_event(located_script_name!())?; worker.dispatch_unload_event(located_script_name!())?; if let Some(coverage_collector) = coverage_collector.as_mut() { |