Shuffle/.forgejo/scripts/supabase-db-tests.sh
cschlaefke 51ab6e2667
All checks were successful
CI / flutter (pull_request) Successful in 1m5s
CI / web-build (pull_request) Successful in 53s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 35s
ci: run supabase-tests against the runner's docker-in-docker daemon
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 22:05:08 +01:00

19 lines
1.1 KiB
Bash
Executable file

#!/usr/bin/env bash
# pgTAP-Tests gegen den laufenden Supabase-Stack ausführen, wenn der Docker-Daemon remote ist
# (DOCKER_HOST=tcp://..., z. B. dind). `supabase test db` bindet supabase/tests per Host-Pfad ein;
# dieser Pfad existiert im dind nicht (Ergebnis: "no pgTAP tests found"). Daher: Tests per
# `docker cp` in einen pg_prove-Container kopieren. Voraussetzung: `supabase start` lief.
set -euo pipefail
PROJECT_ID="${SUPABASE_PROJECT_ID:-shuffle}" # = project_id in supabase/config.toml
PG_PROVE_IMAGE="${PG_PROVE_IMAGE:-public.ecr.aws/supabase/pg_prove:3.36}" # wie in Supabase CLI 3.0.0
# pgTAP wie `supabase test db` vorab aktivieren (die Tests rufen nur plan() etc. auf)
docker exec "supabase_db_${PROJECT_ID}" psql -U postgres -d postgres -v ON_ERROR_STOP=1 \
-c "create extension if not exists pgtap with schema extensions"
cid=$(docker create --network "supabase_network_${PROJECT_ID}" -e PGPASSWORD=postgres \
"$PG_PROVE_IMAGE" pg_prove --ext .sql -r -h "supabase_db_${PROJECT_ID}" -U postgres -d postgres /tests)
trap 'docker rm -f "$cid" >/dev/null 2>&1 || true' EXIT
docker cp supabase/tests "$cid:/"
docker start -a "$cid"