diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/tests/integration/test_tests.rs | 6 | ||||
-rw-r--r-- | cli/tests/testdata/test/load_unload.out | 6 | ||||
-rw-r--r-- | cli/tests/testdata/test/load_unload.ts | 22 | ||||
-rw-r--r-- | cli/tools/test_runner.rs | 14 |
4 files changed, 38 insertions, 10 deletions
diff --git a/cli/tests/integration/test_tests.rs b/cli/tests/integration/test_tests.rs index 36bd6b94c..355a3c261 100644 --- a/cli/tests/integration/test_tests.rs +++ b/cli/tests/integration/test_tests.rs @@ -49,6 +49,12 @@ itest!(fail { output: "test/fail.out", }); +itest!(load_unload { + args: "test test/load_unload.ts", + exit_code: 0, + output: "test/load_unload.out", +}); + itest!(doc { args: "test --doc --allow-all test/doc.ts", exit_code: 1, diff --git a/cli/tests/testdata/test/load_unload.out b/cli/tests/testdata/test/load_unload.out new file mode 100644 index 000000000..b407ce122 --- /dev/null +++ b/cli/tests/testdata/test/load_unload.out @@ -0,0 +1,6 @@ +Check [WILDCARD]/test/load_unload.ts +running 1 test from [WILDCARD]/test/load_unload.ts +test test ... ok ([WILDCARD]) + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out ([WILDCARD]) + diff --git a/cli/tests/testdata/test/load_unload.ts b/cli/tests/testdata/test/load_unload.ts new file mode 100644 index 000000000..2bd04a676 --- /dev/null +++ b/cli/tests/testdata/test/load_unload.ts @@ -0,0 +1,22 @@ +let interval: number | null = null; +addEventListener("load", () => { + if (interval) { + throw new Error("Interval is already set"); + } + + interval = setInterval(() => {}, 0); +}); + +addEventListener("unload", () => { + if (!interval) { + throw new Error("Interval was not set"); + } + + clearInterval(interval); +}); + +Deno.test("test", () => { + if (!interval) { + throw new Error("Interval was not set"); + } +}); diff --git a/cli/tools/test_runner.rs b/cli/tools/test_runner.rs index 304c61b11..4018e0a14 100644 --- a/cli/tools/test_runner.rs +++ b/cli/tools/test_runner.rs @@ -16,7 +16,6 @@ use deno_core::futures::future; use deno_core::futures::stream; use deno_core::futures::FutureExt; use deno_core::futures::StreamExt; -use deno_core::located_script_name; use deno_core::serde_json::json; use deno_core::ModuleSpecifier; use deno_runtime::permissions::Permissions; @@ -221,6 +220,8 @@ pub async fn test_specifier( test_source .push_str("await new Promise(resolve => setTimeout(resolve, 0));\n"); + test_source.push_str("window.dispatchEvent(new Event('load'));\n"); + test_source.push_str(&format!( "await Deno[Deno.internal].runTests({});\n", json!({ @@ -230,6 +231,8 @@ pub async fn test_specifier( }), )); + test_source.push_str("window.dispatchEvent(new Event('unload'));\n"); + let test_file = File { local: test_module.to_file_path().unwrap(), maybe_types: None, @@ -266,20 +269,11 @@ pub async fn test_specifier( None }; - worker.execute_script( - &located_script_name!(), - "window.dispatchEvent(new Event('load'))", - )?; - worker.execute_module(&test_module).await?; worker .run_event_loop(maybe_coverage_collector.is_none()) .await?; - worker.execute_script( - &located_script_name!(), - "window.dispatchEvent(new Event('unload'))", - )?; if let Some(coverage_collector) = maybe_coverage_collector.as_mut() { worker |