summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2022-03-11 02:33:02 +0100
committerGitHub <noreply@github.com>2022-03-11 02:33:02 +0100
commit808f797633ba82c0e9198481ddd742284a03cb9c (patch)
treeda54caf98d23d05d855f367c48821b1ece9517b3 /cli/tests
parent8db3a9546b59fdd5e7203f2e63a828e3c5108e7e (diff)
fix(compat): cjs/esm interop for dynamic imports (#13792)
This commit fixes CJS/ESM interop in compat mode for dynamically imported modules. "ProcState::prepare_module_load" was changed to accept a list of "graph roots" without associated "module kind". That module kind was always hardcoded to "ESM" which is not true for CJS/ESM interop - a CommonJs module might be imported using "import()" function. In such case the root of the graph should have "CommonJs" module kind instead of "ESM".
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/integration/compat_tests.rs6
-rw-r--r--cli/tests/testdata/compat/import_cjs_from_esm/main_dynamic.mjs2
2 files changed, 8 insertions, 0 deletions
diff --git a/cli/tests/integration/compat_tests.rs b/cli/tests/integration/compat_tests.rs
index c8fc1c0a0..5c6a93201 100644
--- a/cli/tests/integration/compat_tests.rs
+++ b/cli/tests/integration/compat_tests.rs
@@ -101,6 +101,12 @@ itest!(cjs_esm_interop {
output: "compat/import_cjs_from_esm.out",
});
+itest!(cjs_esm_interop_dynamic {
+ args:
+ "run --compat --unstable -A --quiet --no-check compat/import_cjs_from_esm/main_dynamic.mjs",
+ output: "compat/import_cjs_from_esm.out",
+});
+
#[test]
fn globals_in_repl() {
let (out, _err) = util::run_and_collect_output_with_args(
diff --git a/cli/tests/testdata/compat/import_cjs_from_esm/main_dynamic.mjs b/cli/tests/testdata/compat/import_cjs_from_esm/main_dynamic.mjs
new file mode 100644
index 000000000..e94af67a4
--- /dev/null
+++ b/cli/tests/testdata/compat/import_cjs_from_esm/main_dynamic.mjs
@@ -0,0 +1,2 @@
+const url = new URL("./imported.js", import.meta.url);
+await import(url.href);