django-auditlog/runtests.sh

44 lines
1.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# Run tests against all supported databases
set -e
# Default settings
export TEST_DB_USER=${TEST_DB_USER:-testuser}
export TEST_DB_PASS=${TEST_DB_PASS:-testpass}
export TEST_DB_HOST=${TEST_DB_HOST:-127.0.0.1}
export TEST_DB_NAME=${TEST_DB_NAME:-auditlog}
# Cleanup on exit
trap 'docker compose -f auditlog_tests/docker-compose.yml down -v --remove-orphans 2>/dev/null || true' EXIT
echo "Starting containers..."
docker compose -f auditlog_tests/docker-compose.yml up -d
echo "Waiting for databases..."
echo "Waiting for PostgreSQL..."
until docker compose -f auditlog_tests/docker-compose.yml exec postgres pg_isready -U ${TEST_DB_USER} -d auditlog >/dev/null 2>&1; do
sleep 1
done
echo "Waiting for MySQL..."
until docker compose -f auditlog_tests/docker-compose.yml exec mysql mysqladmin ping -h 127.0.0.1 -u ${TEST_DB_USER} --password=${TEST_DB_PASS} --silent >/dev/null 2>&1; do
sleep 1
done
echo "Databases ready!"
# Run tests for each database
for backend in sqlite3 postgresql mysql; do
echo "Testing $backend..."
export TEST_DB_BACKEND=$backend
case $backend in
postgresql) export TEST_DB_PORT=5432 ;;
mysql) export TEST_DB_PORT=3306;;
sqlite3) unset TEST_DB_PORT ;;
esac
tox
done
echo "All tests completed!"