From f0566f31950fbd09e189b4b50d86806ddfc9d913 Mon Sep 17 00:00:00 2001 From: theMackabu Date: Sun, 29 Mar 2026 18:55:28 -0700 Subject: [PATCH] add tests for importing --- .../import_dynamic_filename_capture_child.mjs | 1 + ...port_dynamic_filename_capture_exporter.mjs | 4 ++++ ...import_dynamic_filename_capture_parent.mjs | 19 ++++++++++++++++ ...import_dynamic_filename_capture_runner.mjs | 14 ++++++++++++ tests/import_dynamic_rsc_path_runner.mjs | 14 ++++++++++++ tests/import_meta_filename_capture.mjs | 22 +++++++++++++++++++ tests/rsc/index.js | 1 + tests/ssr/index.js | 4 ++++ 8 files changed, 79 insertions(+) create mode 100644 tests/import_dynamic_filename_capture_child.mjs create mode 100644 tests/import_dynamic_filename_capture_exporter.mjs create mode 100644 tests/import_dynamic_filename_capture_parent.mjs create mode 100644 tests/import_dynamic_filename_capture_runner.mjs create mode 100644 tests/import_dynamic_rsc_path_runner.mjs create mode 100644 tests/import_meta_filename_capture.mjs create mode 100644 tests/rsc/index.js create mode 100644 tests/ssr/index.js diff --git a/tests/import_dynamic_filename_capture_child.mjs b/tests/import_dynamic_filename_capture_child.mjs new file mode 100644 index 0000000..5abfab8 --- /dev/null +++ b/tests/import_dynamic_filename_capture_child.mjs @@ -0,0 +1 @@ +export const childFilename = import.meta.filename; diff --git a/tests/import_dynamic_filename_capture_exporter.mjs b/tests/import_dynamic_filename_capture_exporter.mjs new file mode 100644 index 0000000..00be750 --- /dev/null +++ b/tests/import_dynamic_filename_capture_exporter.mjs @@ -0,0 +1,4 @@ +export async function loadChildLater() { + const child = await import('./import_dynamic_filename_capture_child.mjs'); + return child.childFilename; +} diff --git a/tests/import_dynamic_filename_capture_parent.mjs b/tests/import_dynamic_filename_capture_parent.mjs new file mode 100644 index 0000000..1ff8285 --- /dev/null +++ b/tests/import_dynamic_filename_capture_parent.mjs @@ -0,0 +1,19 @@ +function assert(condition, message) { + if (!condition) throw new Error(message); +} + +const topFilename = import.meta.filename; + +async function loadChild() { + return await import('./import_dynamic_filename_capture_child.mjs'); +} + +const child = await loadChild(); + +assert(import.meta.filename === topFilename, 'parent import.meta.filename drifted'); +assert( + child.childFilename.endsWith('/tests/import_dynamic_filename_capture_child.mjs'), + `dynamic import resolved from wrong base: ${child.childFilename}` +); + +console.log(`import.dynamic.filename.capture:${topFilename}`); diff --git a/tests/import_dynamic_filename_capture_runner.mjs b/tests/import_dynamic_filename_capture_runner.mjs new file mode 100644 index 0000000..4c9c52e --- /dev/null +++ b/tests/import_dynamic_filename_capture_runner.mjs @@ -0,0 +1,14 @@ +function assert(condition, message) { + if (!condition) throw new Error(message); +} + +import { loadChildLater } from './import_dynamic_filename_capture_exporter.mjs'; + +const childFilename = await loadChildLater(); + +assert( + childFilename.endsWith('/tests/import_dynamic_filename_capture_child.mjs'), + `late dynamic import resolved from wrong base: ${childFilename}` +); + +console.log(`import.dynamic.filename.late:${childFilename}`); diff --git a/tests/import_dynamic_rsc_path_runner.mjs b/tests/import_dynamic_rsc_path_runner.mjs new file mode 100644 index 0000000..8eb1b7d --- /dev/null +++ b/tests/import_dynamic_rsc_path_runner.mjs @@ -0,0 +1,14 @@ +function assert(condition, message) { + if (!condition) throw new Error(message); +} + +import { loadRscIndexLater } from './ssr/index.js'; + +const filename = await loadRscIndexLater(); + +assert( + filename.endsWith('/tests/rsc/index.js'), + `late dynamic import resolved from wrong base: ${filename}` +); + +console.log(`import.dynamic.rsc.path:${filename}`); diff --git a/tests/import_meta_filename_capture.mjs b/tests/import_meta_filename_capture.mjs new file mode 100644 index 0000000..e014f82 --- /dev/null +++ b/tests/import_meta_filename_capture.mjs @@ -0,0 +1,22 @@ +function assert(condition, message) { + if (!condition) throw new Error(message); +} + +const topFilename = import.meta.filename; + +function nestedFilename() { + return import.meta.filename; +} + +async function asyncFilename() { + await 0; + return import.meta.filename; +} + +const nested = nestedFilename(); +const asyncValue = await asyncFilename(); + +assert(nested === topFilename, `nested import.meta.filename drifted: ${nested} !== ${topFilename}`); +assert(asyncValue === topFilename, `async import.meta.filename drifted: ${asyncValue} !== ${topFilename}`); + +console.log(`import.meta.filename.capture:${topFilename}`); diff --git a/tests/rsc/index.js b/tests/rsc/index.js new file mode 100644 index 0000000..587b050 --- /dev/null +++ b/tests/rsc/index.js @@ -0,0 +1 @@ +export const marker = import.meta.filename; diff --git a/tests/ssr/index.js b/tests/ssr/index.js new file mode 100644 index 0000000..17152b4 --- /dev/null +++ b/tests/ssr/index.js @@ -0,0 +1,4 @@ +export async function loadRscIndexLater() { + const mod = await import('../rsc/index.js'); + return mod.marker; +} -- 2.51.2