test(03-04): add repeatable Phase 3 check script
- Root and app vet/test/race plus focused genres parity and corpus audit - Refuses missing Docker and runs the Phase 2 --fresh-php regression Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
67
scripts/check-phase3.sh
Executable file
67
scripts/check-phase3.sh
Executable file
@@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Repeatable Phase 3 verification: root and app vet/test/race, focused real
|
||||||
|
# genres parity, corpus audit, and the Phase 2 harness regression.
|
||||||
|
# Docker is required; unavailable Docker is a failed gate, never a skip.
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
APP="$(cd "$ROOT/../fonoteka.go" && pwd)"
|
||||||
|
PHP_ROOT="${PHP_ROOT:-/media/nvme/dev/golem15/fonoteka}"
|
||||||
|
ROUTES_PHP="$PHP_ROOT/plugins/golem15/fonoteka/routes.php"
|
||||||
|
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
|
echo "refuse: docker is required for Phase 3 Postgres and PHP regression" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! docker info >/dev/null 2>&1; then
|
||||||
|
echo "refuse: docker daemon is not available" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
run_module() {
|
||||||
|
local name="$1"
|
||||||
|
local dir="$2"
|
||||||
|
echo "==> ${name} (${dir})"
|
||||||
|
(
|
||||||
|
cd "$dir"
|
||||||
|
go vet ./...
|
||||||
|
go test ./...
|
||||||
|
go test -race ./...
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "==> docker is available"
|
||||||
|
run_module "root" "$ROOT"
|
||||||
|
run_module "app" "$APP"
|
||||||
|
|
||||||
|
echo "==> focused genres parity (one real ported pass)"
|
||||||
|
(
|
||||||
|
cd "$APP"
|
||||||
|
go test ./parity -count=1 -run 'TestParityCorpus$'
|
||||||
|
)
|
||||||
|
|
||||||
|
echo "==> focused genre security and tenant isolation"
|
||||||
|
(
|
||||||
|
cd "$APP"
|
||||||
|
go test ./parity -count=1 -run 'TestGenreSecurityBoundaries|TestGenreCountsScopedToActiveCollection|TestGenreQueryFailsOnWrongLocale'
|
||||||
|
)
|
||||||
|
|
||||||
|
echo "==> corpus audit"
|
||||||
|
CORPUS_ARGS=(
|
||||||
|
--manifest "$APP/parity/manifest.yaml"
|
||||||
|
--require-recorded
|
||||||
|
--require-clients
|
||||||
|
--check-secrets
|
||||||
|
)
|
||||||
|
if [[ -f "$ROUTES_PHP" ]]; then
|
||||||
|
CORPUS_ARGS+=(--routes "$ROUTES_PHP")
|
||||||
|
fi
|
||||||
|
(
|
||||||
|
cd "$APP"
|
||||||
|
go run ./parity/check_corpus.go "${CORPUS_ARGS[@]}"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo "==> Phase 2 harness regression"
|
||||||
|
bash "$ROOT/scripts/check-phase2.sh" --fresh-php
|
||||||
|
|
||||||
|
echo "phase3 check passed"
|
||||||
Reference in New Issue
Block a user