run-tests.sh 970 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/bin/bash
  2. set -e
  3. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
  4. PACKAGE_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
  5. DB_DIR="$SCRIPT_DIR/db"
  6. # Unique project name per worktree so containers don't collide
  7. PROJECT_HASH=$(echo "$PACKAGE_DIR" | shasum | cut -c1-8)
  8. COMPOSE_PROJECT_NAME="pg-meta-${PROJECT_HASH}"
  9. export COMPOSE_PROJECT_NAME
  10. # Find an available port in the range 5432-5531
  11. PG_TEST_PORT=5432
  12. MAX_PORT=5531
  13. while nc -z localhost "$PG_TEST_PORT" 2>/dev/null; do
  14. if [ "$PG_TEST_PORT" -ge "$MAX_PORT" ]; then
  15. echo "error: no available port found in range 5432-${MAX_PORT}" >&2
  16. exit 1
  17. fi
  18. PG_TEST_PORT=$((PG_TEST_PORT + 1))
  19. done
  20. export PG_TEST_PORT
  21. DATABASE_URL="postgresql://postgres:postgres@localhost:${PG_TEST_PORT}"
  22. export DATABASE_URL
  23. cleanup() {
  24. cd "$DB_DIR"
  25. docker compose down 2>/dev/null || true
  26. }
  27. trap cleanup EXIT
  28. cd "$DB_DIR"
  29. docker compose down 2>/dev/null || true
  30. docker compose up --detach --wait
  31. cd "$PACKAGE_DIR"
  32. "$@"
  33. rc=$?
  34. exit $rc