From a8b4d7ede4ff33f618979006b1cb9f3e993caad2 Mon Sep 17 00:00:00 2001 From: Adam Cozzette Date: Wed, 6 May 2026 08:18:17 -0700 Subject: [PATCH 1/4] Add js_test with `chdir = package_name()` that reads source file from current package --- js/private/test/data/BUILD.bazel | 9 +++++++++ js/private/test/data/open_file.mjs | 2 ++ 2 files changed, 11 insertions(+) create mode 100644 js/private/test/data/open_file.mjs diff --git a/js/private/test/data/BUILD.bazel b/js/private/test/data/BUILD.bazel index 814afb8ed9..d2c40a5125 100644 --- a/js/private/test/data/BUILD.bazel +++ b/js/private/test/data/BUILD.bazel @@ -88,6 +88,15 @@ js_test( entry_point = "test.js", ) +# TEST: js_test(data = source file, chdir = package_name()) +js_test( + name = "chdir-source-data", + args = ["data.json"], + chdir = package_name(), + data = [":data.json"], + entry_point = "open_file.mjs", +) + # TEST: js_test(data = genrule()) ------------------------- js_test( name = "from-genrule", diff --git a/js/private/test/data/open_file.mjs b/js/private/test/data/open_file.mjs new file mode 100644 index 0000000000..6b086ffdd5 --- /dev/null +++ b/js/private/test/data/open_file.mjs @@ -0,0 +1,2 @@ +import { readFileSync } from 'fs'; +readFileSync(process.argv[2]); From 78013762b67a8180ab53a1d878cc68ac8792df0b Mon Sep 17 00:00:00 2001 From: Adam Cozzette Date: Wed, 6 May 2026 08:18:57 -0700 Subject: [PATCH 2/4] Revert "refactor: simplify launcher script logic for `chdir` (#2813)" This reverts commit 19955f0bdd887a6ef236af4e61a5389bb1a673fa. --- js/private/js_binary.sh.tpl | 5 ++++- js/private/test/snapshots/launcher.sh | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/js/private/js_binary.sh.tpl b/js/private/js_binary.sh.tpl index ad99a00047..5d0234cb5c 100644 --- a/js/private/js_binary.sh.tpl +++ b/js/private/js_binary.sh.tpl @@ -328,7 +328,10 @@ fi # Change directory to user specified package if set if [ "${JS_BINARY__CHDIR:-}" ]; then logf_debug "changing directory to user specified package %s" "$JS_BINARY__CHDIR" - cd "$JS_BINARY__EXECROOT/${BAZEL_BINDIR:-$JS_BINARY__BINDIR}/$JS_BINARY__CHDIR" + case "$JS_BINARY__CHDIR" in + external/*) cd "$(resolve_execroot_bin_path "$JS_BINARY__CHDIR")" ;; + *) cd "$JS_BINARY__CHDIR" ;; + esac fi # Gather node options diff --git a/js/private/test/snapshots/launcher.sh b/js/private/test/snapshots/launcher.sh index 7fdf331a76..ed10a9739e 100644 --- a/js/private/test/snapshots/launcher.sh +++ b/js/private/test/snapshots/launcher.sh @@ -448,7 +448,10 @@ fi # Change directory to user specified package if set if [ "${JS_BINARY__CHDIR:-}" ]; then logf_debug "changing directory to user specified package %s" "$JS_BINARY__CHDIR" - cd "$JS_BINARY__EXECROOT/${BAZEL_BINDIR:-$JS_BINARY__BINDIR}/$JS_BINARY__CHDIR" + case "$JS_BINARY__CHDIR" in + external/*) cd "$(resolve_execroot_bin_path "$JS_BINARY__CHDIR")" ;; + *) cd "$JS_BINARY__CHDIR" ;; + esac fi # Gather node options From 6677e2a196753229b9a96d1e0eb1b954c1e01ff5 Mon Sep 17 00:00:00 2001 From: Adam Cozzette Date: Wed, 6 May 2026 08:59:37 -0700 Subject: [PATCH 3/4] Add more tests --- js/private/test/data/BUILD.bazel | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/js/private/test/data/BUILD.bazel b/js/private/test/data/BUILD.bazel index d2c40a5125..8d78183464 100644 --- a/js/private/test/data/BUILD.bazel +++ b/js/private/test/data/BUILD.bazel @@ -89,6 +89,9 @@ js_test( ) # TEST: js_test(data = source file, chdir = package_name()) +# This test and the following one verify that with `chdir = package_name()` we +# are changing to the correct directory, by making sure data.json is present in +# the working directory. js_test( name = "chdir-source-data", args = ["data.json"], @@ -97,6 +100,30 @@ js_test( entry_point = "open_file.mjs", ) +js_test( + name = "chdir-source-data-relative", + args = ["./data.json"], + chdir = package_name(), + data = [":data.json"], + entry_point = "open_file.mjs", +) + +# TEST: js_test(data = source file, chdir = None) with rootpath +js_test( + name = "source-data-rootpath", + args = ["$(rootpath :data.json)"], + data = [":data.json"], + entry_point = "open_file.mjs", +) + +# TEST: js_test(data = source file, chdir = None) with execpath +js_test( + name = "source-data-execpath", + args = ["$(execpath :data.json)"], + data = [":data.json"], + entry_point = "open_file.mjs", +) + # TEST: js_test(data = genrule()) ------------------------- js_test( name = "from-genrule", From b01d61c8c21ad8f381580d9893a61b38b4399ef0 Mon Sep 17 00:00:00 2001 From: Adam Cozzette Date: Wed, 6 May 2026 09:27:22 -0700 Subject: [PATCH 4/4] Rename open_file.mjs to open_arg.mjs --- js/private/test/data/BUILD.bazel | 8 ++++---- js/private/test/data/{open_file.mjs => open_arg.mjs} | 0 2 files changed, 4 insertions(+), 4 deletions(-) rename js/private/test/data/{open_file.mjs => open_arg.mjs} (100%) diff --git a/js/private/test/data/BUILD.bazel b/js/private/test/data/BUILD.bazel index 8d78183464..9c49407b0d 100644 --- a/js/private/test/data/BUILD.bazel +++ b/js/private/test/data/BUILD.bazel @@ -97,7 +97,7 @@ js_test( args = ["data.json"], chdir = package_name(), data = [":data.json"], - entry_point = "open_file.mjs", + entry_point = "open_arg.mjs", ) js_test( @@ -105,7 +105,7 @@ js_test( args = ["./data.json"], chdir = package_name(), data = [":data.json"], - entry_point = "open_file.mjs", + entry_point = "open_arg.mjs", ) # TEST: js_test(data = source file, chdir = None) with rootpath @@ -113,7 +113,7 @@ js_test( name = "source-data-rootpath", args = ["$(rootpath :data.json)"], data = [":data.json"], - entry_point = "open_file.mjs", + entry_point = "open_arg.mjs", ) # TEST: js_test(data = source file, chdir = None) with execpath @@ -121,7 +121,7 @@ js_test( name = "source-data-execpath", args = ["$(execpath :data.json)"], data = [":data.json"], - entry_point = "open_file.mjs", + entry_point = "open_arg.mjs", ) # TEST: js_test(data = genrule()) ------------------------- diff --git a/js/private/test/data/open_file.mjs b/js/private/test/data/open_arg.mjs similarity index 100% rename from js/private/test/data/open_file.mjs rename to js/private/test/data/open_arg.mjs