diff options
| author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-10-06 10:18:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-06 10:18:22 +0200 |
| commit | c7c767782538243ded64742dca9b34d6af74d62d (patch) | |
| tree | e0c4cdaac58f56b09c54476d73f3d5feb419e731 /cli/tests | |
| parent | 40324ff74816a99ea061929ece1c6a4ff3078bc3 (diff) | |
fix(core): module execution with top level await (#7672)
This commit fixes implementation of top level await in "deno_core".
Previously promise returned from module execution was ignored causing to execute
modules out-of-order.
With this commit promise returned from module execution is stored on "JsRuntime"
and event loop is polled until the promise resolves.
Diffstat (limited to 'cli/tests')
| -rw-r--r-- | cli/tests/integration_tests.rs | 10 | ||||
| -rw-r--r-- | cli/tests/top_level_await_bug.js | 2 | ||||
| -rw-r--r-- | cli/tests/top_level_await_bug.out | 1 | ||||
| -rw-r--r-- | cli/tests/top_level_await_bug2.js | 15 | ||||
| -rw-r--r-- | cli/tests/top_level_await_bug2.out | 4 | ||||
| -rw-r--r-- | cli/tests/top_level_await_bug_nested.js | 5 |
6 files changed, 37 insertions, 0 deletions
diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index 8e2007b42..9ad7bac8c 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -2662,6 +2662,16 @@ itest!(ignore_require { exit_code: 0, }); +itest!(top_level_await_bug { + args: "run --allow-read top_level_await_bug.js", + output: "top_level_await_bug.out", +}); + +itest!(top_level_await_bug2 { + args: "run --allow-read top_level_await_bug2.js", + output: "top_level_await_bug2.out", +}); + #[test] fn cafile_env_fetch() { use deno_core::url::Url; diff --git a/cli/tests/top_level_await_bug.js b/cli/tests/top_level_await_bug.js new file mode 100644 index 000000000..3c6860a5b --- /dev/null +++ b/cli/tests/top_level_await_bug.js @@ -0,0 +1,2 @@ +const mod = await import("./top_level_await_bug_nested.js"); +console.log(mod); diff --git a/cli/tests/top_level_await_bug.out b/cli/tests/top_level_await_bug.out new file mode 100644 index 000000000..f0369645c --- /dev/null +++ b/cli/tests/top_level_await_bug.out @@ -0,0 +1 @@ +Module { default: 1, [Symbol(Symbol.toStringTag)]: "Module" } diff --git a/cli/tests/top_level_await_bug2.js b/cli/tests/top_level_await_bug2.js new file mode 100644 index 000000000..c847bbd34 --- /dev/null +++ b/cli/tests/top_level_await_bug2.js @@ -0,0 +1,15 @@ +const mod = await import("./top_level_await_bug_nested.js"); +console.log(mod); + +const sleep = (n) => new Promise((r) => setTimeout(r, n)); + +await sleep(100); +console.log("slept"); + +window.addEventListener("load", () => { + console.log("load event"); +}); + +setTimeout(() => { + console.log("timeout"); +}, 1000); diff --git a/cli/tests/top_level_await_bug2.out b/cli/tests/top_level_await_bug2.out new file mode 100644 index 000000000..509ee27c2 --- /dev/null +++ b/cli/tests/top_level_await_bug2.out @@ -0,0 +1,4 @@ +Module { default: 1, [Symbol(Symbol.toStringTag)]: "Module" } +slept +load event +timeout diff --git a/cli/tests/top_level_await_bug_nested.js b/cli/tests/top_level_await_bug_nested.js new file mode 100644 index 000000000..894f0de2d --- /dev/null +++ b/cli/tests/top_level_await_bug_nested.js @@ -0,0 +1,5 @@ +const sleep = (n) => new Promise((r) => setTimeout(r, n)); + +await sleep(100); + +export default 1; |
