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; +}