Skip to content

Commit 01f12ed

Browse files
committed
Fix run-test262 dynamic import
Make basename imports resolve relative to the file under test.
1 parent 440fc1b commit 01f12ed

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

run-test262.c

+15-2
Original file line numberDiff line numberDiff line change
@@ -820,6 +820,19 @@ static JSModuleDef *js_module_loader_test(JSContext *ctx,
820820
uint8_t *buf;
821821
JSModuleDef *m;
822822
JSValue func_val;
823+
char *filename, *slash, path[1024];
824+
825+
// interpret import("bar.js") from path/to/foo.js as
826+
// import("path/to/bar.js") but leave import("./bar.js") untouched
827+
filename = opaque;
828+
if (!strchr(module_name, '/')) {
829+
slash = strrchr(filename, '/');
830+
if (slash) {
831+
snprintf(path, sizeof(path), "%.*s/%s",
832+
(int) (slash - filename), filename, module_name);
833+
module_name = path;
834+
}
835+
}
823836

824837
buf = js_load_file(ctx, &buf_len, module_name);
825838
if (!buf) {
@@ -1555,7 +1568,7 @@ int run_test_buf(const char *filename, char *harness, namelist_t *ip,
15551568
JS_SetCanBlock(rt, can_block);
15561569

15571570
/* loader for ES6 modules */
1558-
JS_SetModuleLoaderFunc(rt, NULL, js_module_loader_test, NULL);
1571+
JS_SetModuleLoaderFunc(rt, NULL, js_module_loader_test, (void *) filename);
15591572

15601573
add_helpers(ctx);
15611574

@@ -1851,7 +1864,7 @@ int run_test262_harness_test(const char *filename, BOOL is_module)
18511864
JS_SetCanBlock(rt, can_block);
18521865

18531866
/* loader for ES6 modules */
1854-
JS_SetModuleLoaderFunc(rt, NULL, js_module_loader_test, NULL);
1867+
JS_SetModuleLoaderFunc(rt, NULL, js_module_loader_test, (void *) filename);
18551868

18561869
add_helpers(ctx);
18571870

test262_errors.txt

-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ test262/test/language/expressions/assignment/target-member-computed-reference-nu
1919
test262/test/language/expressions/assignment/target-member-computed-reference-null.js:32: strict mode: Test262Error: Expected a DummyError but got a TypeError
2020
test262/test/language/expressions/assignment/target-member-computed-reference-undefined.js:32: Test262Error: Expected a DummyError but got a TypeError
2121
test262/test/language/expressions/assignment/target-member-computed-reference-undefined.js:32: strict mode: Test262Error: Expected a DummyError but got a TypeError
22-
test262/test/language/expressions/dynamic-import/usage-from-eval.js:26: TypeError: $DONE() not called
23-
test262/test/language/expressions/dynamic-import/usage-from-eval.js:26: strict mode: TypeError: $DONE() not called
2422
test262/test/language/expressions/function/static-init-await-binding.js:16: SyntaxError: 'await' is a reserved identifier
2523
test262/test/language/expressions/function/static-init-await-binding.js:16: strict mode: SyntaxError: 'await' is a reserved identifier
2624
test262/test/language/expressions/generators/static-init-await-binding.js:16: SyntaxError: 'await' is a reserved identifier

0 commit comments

Comments
 (0)