Commit 3626c1c02c433ca6dc90355dc56804f16626804d
1 parent
723621ed
chore(infra): make scripts/test.sh runnable on macOS without preset PATH
- setup-test-db.sh: prepend Homebrew mysql-client bin paths if present - test.sh: skip frontend build/lint/test segments when frontend/ absent
Showing
2 changed files
with
23 additions
and
3 deletions
scripts/setup-test-db.sh
| @@ -13,6 +13,12 @@ | @@ -13,6 +13,12 @@ | ||
| 13 | 13 | ||
| 14 | set -euo pipefail | 14 | set -euo pipefail |
| 15 | 15 | ||
| 16 | +# macOS Homebrew 的 mysql-client 是 keg-only,默认不在 PATH;非交互式 bash 也不读 ~/.zshrc。 | ||
| 17 | +# 这里幂等 prepend 常见安装路径,命中则用,未命中(如 Linux CI 已自带 mysql)则跳过。 | ||
| 18 | +for p in /opt/homebrew/opt/mysql-client/bin /usr/local/opt/mysql-client/bin; do | ||
| 19 | + [ -d "$p" ] && case ":$PATH:" in *":$p:"*) ;; *) PATH="$p:$PATH" ;; esac | ||
| 20 | +done | ||
| 21 | + | ||
| 16 | ENV_FILE="$(dirname "$0")/../.env.local" | 22 | ENV_FILE="$(dirname "$0")/../.env.local" |
| 17 | [ -f "$ENV_FILE" ] || { echo "[setup-test-db] ⚠️ .env.local 不存在($ENV_FILE)" >&2; exit 1; } | 23 | [ -f "$ENV_FILE" ] || { echo "[setup-test-db] ⚠️ .env.local 不存在($ENV_FILE)" >&2; exit 1; } |
| 18 | 24 |
scripts/test.sh
| @@ -12,13 +12,27 @@ echo "[test.sh] 1/6 setup test db" | @@ -12,13 +12,27 @@ echo "[test.sh] 1/6 setup test db" | ||
| 12 | ./scripts/setup-test-db.sh | 12 | ./scripts/setup-test-db.sh |
| 13 | 13 | ||
| 14 | echo "[test.sh] 2/6 build" | 14 | echo "[test.sh] 2/6 build" |
| 15 | -(cd backend && mvn -B -DskipTests clean package) && (cd frontend && npm ci && npm run build) | 15 | +(cd backend && mvn -B -DskipTests clean package) |
| 16 | +if [ -d frontend ]; then | ||
| 17 | + (cd frontend && npm ci && npm run build) | ||
| 18 | +else | ||
| 19 | + echo "[test.sh] skip frontend build (frontend/ not initialized yet)" | ||
| 20 | +fi | ||
| 16 | 21 | ||
| 17 | echo "[test.sh] 3/6 lint" | 22 | echo "[test.sh] 3/6 lint" |
| 18 | -(cd frontend && npm run lint) | 23 | +if [ -d frontend ]; then |
| 24 | + (cd frontend && npm run lint) | ||
| 25 | +else | ||
| 26 | + echo "[test.sh] skip frontend lint (frontend/ not initialized yet)" | ||
| 27 | +fi | ||
| 19 | 28 | ||
| 20 | echo "[test.sh] 4/6 unit + integration" | 29 | echo "[test.sh] 4/6 unit + integration" |
| 21 | -(cd backend && mvn -B test) && (cd frontend && npm test -- --run) | 30 | +(cd backend && mvn -B test) |
| 31 | +if [ -d frontend ]; then | ||
| 32 | + (cd frontend && npm test -- --run) | ||
| 33 | +else | ||
| 34 | + echo "[test.sh] skip frontend unit tests (frontend/ not initialized yet)" | ||
| 35 | +fi | ||
| 22 | 36 | ||
| 23 | echo "[test.sh] 5/6 E2E" | 37 | echo "[test.sh] 5/6 E2E" |
| 24 | echo "[test.sh] e2e 略" | 38 | echo "[test.sh] e2e 略" |