feat: proper windows support
This commit is contained in:
@@ -3,17 +3,18 @@ load("@rules_shell//shell:sh_test.bzl", "sh_test")
|
||||
test_suite(
|
||||
name = "examples_test",
|
||||
tests = [
|
||||
":examples_basic_run_e2e_test",
|
||||
":examples_basic_hot_restart_shape_test",
|
||||
":examples_workspace_bundle_e2e_test",
|
||||
":examples_workspace_catalog_shape_test",
|
||||
":examples_basic_run_e2e_test",
|
||||
":examples_vite_monorepo_catalog_shape_test",
|
||||
":examples_vite_monorepo_e2e_test",
|
||||
":examples_workspace_bundle_e2e_test",
|
||||
":examples_workspace_catalog_shape_test",
|
||||
],
|
||||
)
|
||||
|
||||
sh_test(
|
||||
name = "examples_basic_e2e_build_test",
|
||||
size = "small",
|
||||
srcs = ["examples_basic_e2e_build_test.sh"],
|
||||
args = [
|
||||
"$(location //examples/basic:BUILD.bazel)",
|
||||
@@ -27,6 +28,7 @@ sh_test(
|
||||
|
||||
sh_test(
|
||||
name = "examples_basic_run_e2e_test",
|
||||
size = "small",
|
||||
srcs = ["examples_basic_run_e2e_test.sh"],
|
||||
args = ["$(location //examples/basic:web_dev)"],
|
||||
data = ["//examples/basic:web_dev"],
|
||||
@@ -34,6 +36,7 @@ sh_test(
|
||||
|
||||
sh_test(
|
||||
name = "examples_basic_hot_restart_shape_test",
|
||||
size = "small",
|
||||
srcs = ["examples_basic_hot_restart_shape_test.sh"],
|
||||
args = ["$(location //examples/basic:web_dev_hot_restart)"],
|
||||
data = ["//examples/basic:web_dev_hot_restart"],
|
||||
@@ -41,6 +44,7 @@ sh_test(
|
||||
|
||||
sh_test(
|
||||
name = "examples_workspace_bundle_e2e_test",
|
||||
size = "small",
|
||||
srcs = ["examples_workspace_bundle_e2e_test.sh"],
|
||||
args = ["$(location //examples/workspace:pkg_b_bundle)"],
|
||||
data = ["//examples/workspace:pkg_b_bundle"],
|
||||
@@ -48,6 +52,7 @@ sh_test(
|
||||
|
||||
sh_test(
|
||||
name = "examples_workspace_catalog_shape_test",
|
||||
size = "small",
|
||||
srcs = ["examples_workspace_catalog_shape_test.sh"],
|
||||
args = [
|
||||
"$(location //examples/workspace:package.json)",
|
||||
@@ -63,6 +68,7 @@ sh_test(
|
||||
|
||||
sh_test(
|
||||
name = "examples_vite_monorepo_catalog_shape_test",
|
||||
size = "small",
|
||||
srcs = ["examples_vite_monorepo_catalog_shape_test.sh"],
|
||||
args = [
|
||||
"$(location //examples/vite_monorepo:package.json)",
|
||||
@@ -70,14 +76,15 @@ sh_test(
|
||||
"$(location //examples/vite_monorepo:apps/app-b/package.json)",
|
||||
],
|
||||
data = [
|
||||
"//examples/vite_monorepo:package.json",
|
||||
"//examples/vite_monorepo:apps/app-a/package.json",
|
||||
"//examples/vite_monorepo:apps/app-b/package.json",
|
||||
"//examples/vite_monorepo:package.json",
|
||||
],
|
||||
)
|
||||
|
||||
sh_test(
|
||||
name = "examples_vite_monorepo_e2e_test",
|
||||
size = "small",
|
||||
srcs = ["examples_vite_monorepo_e2e_test.sh"],
|
||||
args = [
|
||||
"$(location //examples/vite_monorepo:app_a_dev)",
|
||||
@@ -91,6 +98,7 @@ sh_test(
|
||||
|
||||
sh_test(
|
||||
name = "repo_all_targets_test",
|
||||
size = "small",
|
||||
srcs = ["repo_all_targets_test.sh"],
|
||||
args = ["$(location //.github/workflows:ci.yml)"],
|
||||
data = ["//.github/workflows:ci.yml"],
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
binary="$1"
|
||||
launcher="$1"
|
||||
|
||||
grep -Fq -- 'watch_mode="hot"' "${binary}"
|
||||
grep -Fq -- 'bun_args+=("--hot")' "${binary}"
|
||||
grep -Fq -- '--no-clear-screen' "${binary}"
|
||||
grep -Fq -- 'if [[ 1 -eq 0 ]]; then' "${binary}"
|
||||
grep -Fq -- 'readarray -t restart_paths' "${binary}"
|
||||
grep -Fq -- 'examples/basic/README.md' "${binary}"
|
||||
python3 - "${launcher}" <<'PY'
|
||||
import json
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
path = pathlib.Path(sys.argv[1])
|
||||
if path.suffix.lower() == ".cmd":
|
||||
path = pathlib.Path(str(path)[:-4])
|
||||
spec = json.loads(pathlib.Path(f"{path}.launcher.json").read_text())
|
||||
|
||||
assert spec["kind"] == "bun_run", spec
|
||||
assert spec["watch_mode"] == "hot", spec
|
||||
assert "--no-clear-screen" in spec["argv"], spec
|
||||
assert spec["restart_on"], spec
|
||||
assert spec["restart_on"][0].endswith("examples/basic/README.md"), spec
|
||||
PY
|
||||
|
||||
@@ -14,8 +14,24 @@ cleanup() {
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
"${binary}" >"${log_file}" 2>&1 &
|
||||
server_pid=$!
|
||||
start_launcher() {
|
||||
local launcher="$1"
|
||||
local log_target="$2"
|
||||
shift 2
|
||||
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}" >"${log_target}" 2>&1 &
|
||||
else
|
||||
"${launcher}" "$@" >"${log_target}" 2>&1 &
|
||||
fi
|
||||
server_pid=$!
|
||||
}
|
||||
|
||||
start_launcher "${binary}" "${log_file}"
|
||||
|
||||
for _ in {1..20}; do
|
||||
if grep -Fq "rules_bun bun_dev example" "${log_file}"; then
|
||||
|
||||
@@ -17,6 +17,23 @@ cleanup() {
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
start_launcher() {
|
||||
local launcher="$1"
|
||||
local log_target="$2"
|
||||
shift 2
|
||||
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}" >"${log_target}" 2>&1 &
|
||||
else
|
||||
"${launcher}" "$@" >"${log_target}" 2>&1 &
|
||||
fi
|
||||
server_pid=$!
|
||||
}
|
||||
|
||||
pick_port() {
|
||||
python3 - <<'PY'
|
||||
import socket
|
||||
@@ -37,8 +54,7 @@ verify_vite_app() {
|
||||
port="$(pick_port)"
|
||||
log_file="${workdir}/${log_name}.log"
|
||||
|
||||
"${binary}" --host 127.0.0.1 --port "${port}" --strictPort >"${log_file}" 2>&1 &
|
||||
server_pid=$!
|
||||
start_launcher "${binary}" "${log_file}" --host 127.0.0.1 --port "${port}" --strictPort
|
||||
|
||||
for _ in {1..60}; do
|
||||
if ! kill -0 "${server_pid}" 2>/dev/null; then
|
||||
|
||||
Reference in New Issue
Block a user