#!/usr/bin/env bash
# Rebuilds a scratch database from database/schema/*.sql and runs the rule tests.
# Usage:  PGHOST=... PGPORT=... PGUSER=... ./database/tests/run.sh [dbname]
set -euo pipefail
DB="${1:-absurdities_schema_test}"
HERE="$(cd "$(dirname "$0")" && pwd)"
psql -q -d postgres -c "DROP DATABASE IF EXISTS \"$DB\"" -c "CREATE DATABASE \"$DB\""
for f in "$HERE"/../schema/*.sql; do
  echo "loading $(basename "$f")"
  psql -q -d "$DB" -v ON_ERROR_STOP=1 -f "$f"
done
echo "--- rule tests"
OUT="$(psql -q -d "$DB" -f "$HERE/schema_rules_test.sql" 2>&1 | sed 's/^psql:[^ ]* NOTICE:  //;s/^NOTICE:  //' | grep -E '^(PASS|FAIL)')"
echo "$OUT"
echo "--- $(echo "$OUT" | grep -c '^PASS') passed, $(echo "$OUT" | grep -c '^FAIL' || true) failed"
psql -q -d postgres -c "DROP DATABASE \"$DB\""
! echo "$OUT" | grep -q '^FAIL'
