feat: proper windows support
This commit is contained in:
@@ -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",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user