61 lines
1.5 KiB
Bash
Executable File
61 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# test.sh - Run tests against the PostgreSQL extension using psql
|
|
# Usage: ./test.sh [database_name] [postgres_user]
|
|
# Note: This script expects the extension to be already installed via 'make install'
|
|
|
|
set -e # Exit immediately if a command exits with a non-zero status
|
|
|
|
DB="${1:-morbac_test}"
|
|
PG_USER="${2:-$USER}"
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
TEST_DIR="$PROJECT_DIR/tests"
|
|
|
|
if [ ! -d "$TEST_DIR" ]; then
|
|
echo "Error: test directory not found: $TEST_DIR" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if ! psql -U "$PG_USER" -d "$DB" -c '\q'; then
|
|
echo "Error: cannot connect to database: $DB" >&2
|
|
echo "Ensure the database exists and is accessible" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Running tests on database $DB"
|
|
|
|
total=0
|
|
passed=0
|
|
failed=0
|
|
|
|
set +e # Temporarily disable exit on error to capture test failures
|
|
|
|
for test_file in "$TEST_DIR"/[0-9][0-9]_*.sql; do
|
|
if [ -f "$test_file" ]; then
|
|
test_name=$(basename "$test_file" .sql)
|
|
echo " - $test_name"
|
|
((total++))
|
|
|
|
output=$(psql -U "$PG_USER" -d "$DB" -f "$test_file" 2>&1)
|
|
exit_code=$?
|
|
echo "$output"
|
|
|
|
if [ $exit_code -eq 0 ] && ! echo "$output" | grep -qE "ERROR|FAILED"; then
|
|
((passed++))
|
|
else
|
|
((failed++))
|
|
echo " FAILED"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
set -e # Re-enable exit on error
|
|
|
|
echo "Tests: $total total, $passed passed, $failed failed"
|
|
|
|
if [ $failed -gt 0 ]; then
|
|
exit 1
|
|
fi
|