fix: bun_install adds node_modules to each directory
Some checks failed
CI / test (macos-14, darwin-arm64) (push) Has been cancelled
CI / test (windows-latest, windows) (push) Has been cancelled
CI / test (ubuntu-latest, linux-x64) (push) Has been cancelled
Docs Pages / deploy (push) Failing after 42s

This commit is contained in:
eric
2026-03-06 21:44:15 +01:00
parent 49a5054b02
commit 7139aa3ba2
44 changed files with 1143 additions and 304 deletions

View File

@@ -1,5 +1,16 @@
load("@rules_shell//shell:sh_test.bzl", "sh_test")
test_suite(
name = "examples_test",
tests = [
":examples_basic_run_e2e_test",
":examples_workspace_bundle_e2e_test",
":examples_workspace_catalog_shape_test",
":examples_vite_monorepo_catalog_shape_test",
":examples_vite_monorepo_e2e_test",
],
)
sh_test(
name = "examples_basic_e2e_build_test",
srcs = ["examples_basic_e2e_build_test.sh"],
@@ -13,6 +24,13 @@ sh_test(
],
)
sh_test(
name = "examples_basic_run_e2e_test",
srcs = ["examples_basic_run_e2e_test.sh"],
args = ["$(location //examples/basic:web_dev)"],
data = ["//examples/basic:web_dev"],
)
sh_test(
name = "examples_workspace_bundle_e2e_test",
srcs = ["examples_workspace_bundle_e2e_test.sh"],
@@ -35,6 +53,34 @@ sh_test(
],
)
sh_test(
name = "examples_vite_monorepo_catalog_shape_test",
srcs = ["examples_vite_monorepo_catalog_shape_test.sh"],
args = [
"$(location //examples/vite_monorepo:package.json)",
"$(location //examples/vite_monorepo:apps/app-a/package.json)",
"$(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",
],
)
sh_test(
name = "examples_vite_monorepo_e2e_test",
srcs = ["examples_vite_monorepo_e2e_test.sh"],
args = [
"$(location //examples/vite_monorepo:app_a_dev)",
"$(location //examples/vite_monorepo:app_b_dev)",
],
data = [
"//examples/vite_monorepo:app_a_dev",
"//examples/vite_monorepo:app_b_dev",
],
)
sh_test(
name = "repo_all_targets_test",
srcs = ["repo_all_targets_test.sh"],

View File

@@ -0,0 +1,36 @@
#!/usr/bin/env bash
set -euo pipefail
binary="$1"
workdir="$(mktemp -d)"
log_file="${workdir}/basic.log"
cleanup() {
if [[ -n ${server_pid:-} ]] && kill -0 "${server_pid}" 2>/dev/null; then
kill "${server_pid}" 2>/dev/null || true
wait "${server_pid}" 2>/dev/null || true
fi
rm -rf "${workdir}"
}
trap cleanup EXIT
"${binary}" >"${log_file}" 2>&1 &
server_pid=$!
for _ in {1..20}; do
if grep -Fq "rules_bun bun_dev example" "${log_file}"; then
exit 0
fi
if ! kill -0 "${server_pid}" 2>/dev/null; then
cat "${log_file}" >&2
echo "basic example process exited unexpectedly" >&2
exit 1
fi
sleep 0.5
done
cat "${log_file}" >&2
echo "Timed out waiting for bun_dev example output" >&2
exit 1

View File

@@ -0,0 +1,18 @@
#!/usr/bin/env bash
set -euo pipefail
root_package_json="$1"
app_a_package_json="$2"
app_b_package_json="$3"
grep -Eq '"workspaces"[[:space:]]*:[[:space:]]*\{' "${root_package_json}"
grep -Eq '"packages"[[:space:]]*:[[:space:]]*\[' "${root_package_json}"
grep -Eq '"apps/\*"' "${root_package_json}"
grep -Eq '"catalog"[[:space:]]*:[[:space:]]*\{' "${root_package_json}"
grep -Eq '"vite"[[:space:]]*:[[:space:]]*"5\.4\.14"' "${root_package_json}"
grep -Eq '"catalogs"[[:space:]]*:[[:space:]]*\{' "${root_package_json}"
grep -Eq '"testing"[[:space:]]*:[[:space:]]*\{' "${root_package_json}"
grep -Eq '"vitest"[[:space:]]*:[[:space:]]*"3\.2\.4"' "${root_package_json}"
grep -Eq '"vite"[[:space:]]*:[[:space:]]*"catalog:"' "${app_a_package_json}"
grep -Eq '"vite"[[:space:]]*:[[:space:]]*"catalog:"' "${app_b_package_json}"
grep -Eq '"vitest"[[:space:]]*:[[:space:]]*"catalog:testing"' "${app_b_package_json}"

View File

@@ -0,0 +1,75 @@
#!/usr/bin/env bash
set -euo pipefail
app_a_binary="$1"
app_b_binary="$2"
workdir="$(mktemp -d)"
server_pid=""
log_file=""
cleanup() {
if [[ -n ${server_pid} ]] && kill -0 "${server_pid}" 2>/dev/null; then
kill "${server_pid}" 2>/dev/null || true
wait "${server_pid}" 2>/dev/null || true
fi
rm -rf "${workdir}"
}
trap cleanup EXIT
pick_port() {
python3 - <<'PY'
import socket
sock = socket.socket()
sock.bind(("127.0.0.1", 0))
print(sock.getsockname()[1])
sock.close()
PY
}
verify_vite_app() {
local binary="$1"
local expected_title="$2"
local expected_js="$3"
local log_name="$4"
local port
port="$(pick_port)"
log_file="${workdir}/${log_name}.log"
"${binary}" --host 127.0.0.1 --port "${port}" --strictPort >"${log_file}" 2>&1 &
server_pid=$!
for _ in {1..60}; do
if ! kill -0 "${server_pid}" 2>/dev/null; then
cat "${log_file}" >&2
echo "Vite server exited unexpectedly for ${log_name}" >&2
exit 1
fi
if curl --fail --silent "http://127.0.0.1:${port}/" | grep -Fq "${expected_title}"; then
break
fi
sleep 0.5
done
if ! curl --fail --silent "http://127.0.0.1:${port}/" | grep -Fq "${expected_title}"; then
cat "${log_file}" >&2
echo "Timed out waiting for Vite index page for ${log_name}" >&2
exit 1
fi
if ! curl --fail --silent "http://127.0.0.1:${port}/main.js" | grep -Fq "${expected_js}"; then
cat "${log_file}" >&2
echo "Expected Vite module output was not served for ${log_name}" >&2
exit 1
fi
kill "${server_pid}" 2>/dev/null || true
wait "${server_pid}" 2>/dev/null || true
server_pid=""
}
verify_vite_app "${app_a_binary}" "Vite monorepo app A" "Hello from monorepo app A" "app-a"
verify_vite_app "${app_b_binary}" "Vite monorepo app B" "Hello from monorepo app B" "app-b"