summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/tests/integration/test_tests.rs6
-rw-r--r--cli/tests/testdata/test/load_unload.out6
-rw-r--r--cli/tests/testdata/test/load_unload.ts22
-rw-r--r--cli/tools/test_runner.rs14
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