run_test.sh 926 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. CONTAINER_NAME="rust-test-pg"
  4. DB_USER="test"
  5. DB_PASS="test"
  6. DB_NAME="testdb"
  7. DB_PORT="5433"
  8. DB_URL="postgres://${DB_USER}:${DB_PASS}@localhost:${DB_PORT}/${DB_NAME}"
  9. cleanup() {
  10. echo "Cleaning up..."
  11. docker stop "${CONTAINER_NAME}" >/dev/null 2>&1 || true
  12. docker rm "${CONTAINER_NAME}" >/dev/null 2>&1 || true
  13. }
  14. trap cleanup EXIT INT TERM
  15. echo "Starting fresh PostgreSQL container..."
  16. docker run -d --rm \
  17. --name "${CONTAINER_NAME}" \
  18. -e POSTGRES_USER="${DB_USER}" \
  19. -e POSTGRES_PASSWORD="${DB_PASS}" \
  20. -e POSTGRES_DB="${DB_NAME}" \
  21. -p ${DB_PORT}:5432 \
  22. -v "${PWD}/.docker/pg-init.sql:/docker-entrypoint-initdb.d/init.sql:ro" \
  23. postgres:16
  24. echo "Waiting for PostgreSQL to be ready..."
  25. until docker exec "${CONTAINER_NAME}" pg_isready -U "${DB_USER}" >/dev/null 2>&1; do
  26. sleep 0.5
  27. done
  28. export DATABASE_URL="${DB_URL}"
  29. echo "Running cargo tests..."
  30. cargo test