diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/tests/integration/test_tests.rs | 6 | ||||
-rw-r--r-- | cli/tests/testdata/test/interval.out | 5 | ||||
-rw-r--r-- | cli/tests/testdata/test/interval.ts | 1 | ||||
-rw-r--r-- | cli/tests/testdata/test/unresolved_promise.out | 5 | ||||
-rw-r--r-- | cli/tests/testdata/test/unresolved_promise.ts | 12 | ||||
-rw-r--r-- | cli/tools/test.rs | 41 |
6 files changed, 38 insertions, 32 deletions
diff --git a/cli/tests/integration/test_tests.rs b/cli/tests/integration/test_tests.rs index d9d1eed45..0baf94422 100644 --- a/cli/tests/integration/test_tests.rs +++ b/cli/tests/integration/test_tests.rs @@ -61,6 +61,12 @@ itest!(load_unload { output: "test/load_unload.out", }); +itest!(interval { + args: "test test/interval.ts", + exit_code: 0, + output: "test/interval.out", +}); + itest!(doc { args: "test --doc --allow-all test/doc.ts", exit_code: 1, diff --git a/cli/tests/testdata/test/interval.out b/cli/tests/testdata/test/interval.out new file mode 100644 index 000000000..024698dde --- /dev/null +++ b/cli/tests/testdata/test/interval.out @@ -0,0 +1,5 @@ +Check [WILDCARD]/test/interval.ts +running 0 tests from [WILDCARD]/test/interval.ts + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out ([WILDCARD]) + diff --git a/cli/tests/testdata/test/interval.ts b/cli/tests/testdata/test/interval.ts new file mode 100644 index 000000000..7eb588c59 --- /dev/null +++ b/cli/tests/testdata/test/interval.ts @@ -0,0 +1 @@ +setInterval(function () {}, 0); diff --git a/cli/tests/testdata/test/unresolved_promise.out b/cli/tests/testdata/test/unresolved_promise.out index cd505bcbf..4e5c20a3b 100644 --- a/cli/tests/testdata/test/unresolved_promise.out +++ b/cli/tests/testdata/test/unresolved_promise.out @@ -1,6 +1,5 @@ Check [WILDCARD]/test/unresolved_promise.ts -running 2 tests from [WILDCARD]/test/unresolved_promise.ts -test unresolved promise ... -test result: FAILED. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out ([WILDCARD]) + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out ([WILDCARD]) error: Module evaluation is still pending but there are no pending ops or dynamic imports. This situation is often caused by unresolved promise. diff --git a/cli/tests/testdata/test/unresolved_promise.ts b/cli/tests/testdata/test/unresolved_promise.ts index 8f50e907a..25fe70762 100644 --- a/cli/tests/testdata/test/unresolved_promise.ts +++ b/cli/tests/testdata/test/unresolved_promise.ts @@ -1,11 +1 @@ -Deno.test({ - name: "unresolved promise", - fn() { - return new Promise((_resolve, _reject) => {}); - }, -}); - -Deno.test({ - name: "ok", - fn() {}, -}); +await new Promise((_resolve, _reject) => {}); diff --git a/cli/tools/test.rs b/cli/tools/test.rs index 819f9980c..859e23934 100644 --- a/cli/tools/test.rs +++ b/cli/tools/test.rs @@ -11,6 +11,7 @@ use crate::flags::Flags; use crate::fs_util::collect_specifiers; use crate::fs_util::is_supported_test_ext; use crate::fs_util::is_supported_test_path; +use crate::located_script_name; use crate::media_type::MediaType; use crate::module_graph; use crate::module_graph::GraphBuilder; @@ -264,21 +265,6 @@ async fn test_specifier( test_source.push_str(&format!("import \"{}\";\n", 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!({ - "filter": filter, - "shuffle": shuffle, - }), - )); - - test_source.push_str("window.dispatchEvent(new Event('unload'));\n"); - let test_file = File { local: test_specifier.to_file_path().unwrap(), maybe_types: None, @@ -323,9 +309,28 @@ async fn test_specifier( worker.execute_module(&test_specifier).await?; - worker - .run_event_loop(maybe_coverage_collector.is_none()) - .await?; + worker.js_runtime.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('load'));", + )?; + + let test_result = worker.js_runtime.execute_script( + &located_script_name!(), + &format!( + r#"Deno[Deno.internal].runTests({})"#, + json!({ + "filter": filter, + "shuffle": shuffle, + }), + ), + )?; + + worker.js_runtime.resolve_value(test_result).await?; + + worker.js_runtime.execute_script( + &located_script_name!(), + "window.dispatchEvent(new Event('unload'));", + )?; if let Some(coverage_collector) = maybe_coverage_collector.as_mut() { worker |