feat: proper windows support

This commit is contained in:
eric
2026-03-15 11:04:44 +01:00
parent 4f8e27cd74
commit 626a6640f8
70 changed files with 3410 additions and 1689 deletions

View File

@@ -1,5 +1,5 @@
load("//js:defs.bzl", "js_binary", "js_run_devserver", "js_test", "ts_library")
load("@rules_shell//shell:sh_test.bzl", "sh_test")
load("//js:defs.bzl", "js_binary", "js_run_devserver", "js_test", "ts_library")
ts_library(
name = "helper_lib",
@@ -9,13 +9,14 @@ ts_library(
js_binary(
name = "compat_bin",
args = ["compat-mode"],
entry_point = "main.ts",
deps = [":helper_lib"],
args = ["compat-mode"],
)
sh_test(
name = "js_binary_compat_test",
size = "small",
srcs = ["run_binary.sh"],
args = ["$(location :compat_bin)"],
data = [":compat_bin"],
@@ -23,18 +24,21 @@ sh_test(
js_test(
name = "compat_suite",
size = "small",
entry_point = "app.test.ts",
deps = [":helper_lib"],
)
js_run_devserver(
name = "compat_devserver",
tool = ":compat_bin",
args = ["devserver-mode"],
tool = ":compat_bin",
visibility = ["//tests/ci_test:__pkg__"],
)
sh_test(
name = "js_run_devserver_compat_test",
size = "small",
srcs = ["run_devserver.sh"],
args = ["$(location :compat_devserver)"],
data = [":compat_devserver"],
@@ -42,27 +46,28 @@ sh_test(
js_run_devserver(
name = "compat_devserver_with_package_json",
tool = ":compat_bin",
package_json = "app/package.json",
tool = ":compat_bin",
working_dir = "package",
)
js_run_devserver(
name = "compat_devserver_with_package_dir_hint",
tool = ":compat_bin",
package_dir_hint = "app",
tool = ":compat_bin",
working_dir = "package",
)
sh_test(
name = "js_run_devserver_workspace_shape_test",
size = "small",
srcs = ["verify_workspace_shape.sh"],
args = [
"$(location :compat_devserver_with_package_json)",
"$(location :compat_devserver_with_package_dir_hint)",
],
data = [
":compat_devserver_with_package_json",
":compat_devserver_with_package_dir_hint",
":compat_devserver_with_package_json",
],
)

View File

@@ -2,7 +2,23 @@
set -euo pipefail
binary="$1"
output="$("${binary}")"
run_launcher() {
local launcher="$1"
shift
if [[ ${launcher} == *.cmd ]]; then
local command
printf -v command '"%s"' "${launcher}"
for arg in "$@"; do
printf -v command '%s "%s"' "${command}" "${arg}"
done
cmd.exe /c "${command}" | tr -d '\r'
return 0
fi
"${launcher}" "$@"
}
output="$(run_launcher "${binary}")"
if [[ ${output} != "helper:payload-from-lib compat-mode" ]]; then
echo "unexpected output: ${output}" >&2

View File

@@ -2,7 +2,23 @@
set -euo pipefail
binary="$1"
output="$("${binary}")"
run_launcher() {
local launcher="$1"
shift
if [[ ${launcher} == *.cmd ]]; then
local command
printf -v command '"%s"' "${launcher}"
for arg in "$@"; do
printf -v command '%s "%s"' "${command}" "${arg}"
done
cmd.exe /c "${command}" | tr -d '\r'
return 0
fi
"${launcher}" "$@"
}
output="$(run_launcher "${binary}")"
if [[ ${output} != "helper:payload-from-lib compat-mode devserver-mode" ]]; then
echo "unexpected output: ${output}" >&2

View File

@@ -4,10 +4,25 @@ set -euo pipefail
package_json_launcher="$1"
package_dir_hint_launcher="$2"
grep -Fq -- 'package_json="${runfiles_dir}/_main/tests/js_compat_test/app/package.json"' "${package_json_launcher}"
grep -Fq -- 'package_rel_dir_hint="."' "${package_json_launcher}"
grep -Fq -- 'working_dir_mode="package"' "${package_json_launcher}"
python3 - "${package_json_launcher}" "${package_dir_hint_launcher}" <<'PY'
import json
import pathlib
import sys
grep -Fq -- 'package_json=""' "${package_dir_hint_launcher}"
grep -Fq -- 'package_rel_dir_hint="app"' "${package_dir_hint_launcher}"
grep -Fq -- 'working_dir_mode="package"' "${package_dir_hint_launcher}"
def read_spec(launcher: str):
path = pathlib.Path(launcher)
if path.suffix.lower() == ".cmd":
path = pathlib.Path(str(path)[:-4])
return json.loads(pathlib.Path(f"{path}.launcher.json").read_text())
package_json_spec = read_spec(sys.argv[1])
package_dir_hint_spec = read_spec(sys.argv[2])
assert package_json_spec["package_json_short_path"].endswith("tests/js_compat_test/app/package.json"), package_json_spec
assert package_json_spec["package_dir_hint"] == ".", package_json_spec
assert package_json_spec["working_dir_mode"] == "package", package_json_spec
assert package_dir_hint_spec["package_json_short_path"] == "", package_dir_hint_spec
assert package_dir_hint_spec["package_dir_hint"] == "app", package_dir_hint_spec
assert package_dir_hint_spec["working_dir_mode"] == "package", package_dir_hint_spec
PY