mirror of
https://git.dirksys.ovh/dirk/bankserver.git
synced 2025-12-20 11:09:21 +01:00
86 lines
2.0 KiB
Bash
Executable File
86 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eu
|
|
|
|
ENV_FILE=".env"
|
|
RUN_DIR="/run/postgresql"
|
|
|
|
if [ ! -z "${CI:-}" ]; then
|
|
echo "Running in CI"
|
|
fi
|
|
|
|
if ss -tulwn | grep ":5432" -q; then
|
|
echo "Postgres running"
|
|
else
|
|
echo "Postgres not running"
|
|
|
|
if [ ! -z "${CI:-}" ]; then
|
|
# Create a temporary directory and store its name in a variable.
|
|
TEMPD=$(mktemp -d)
|
|
|
|
# Exit if the temp directory wasn't created successfully.
|
|
if [ ! -e "$TEMPD" ]; then
|
|
>&2 echo "Failed to create temp directory"
|
|
exit 1
|
|
fi
|
|
mkdir "$TEMPD"/run
|
|
ENV_FILE="$TEMPD/.env"
|
|
echo -e "DATABASE__USER=bankserver\nDATABASE__DBNAME=bankserver\nJWT_KEY=ABCDEFG" > $ENV_FILE
|
|
|
|
DB_RUNNING=1
|
|
RUN_DIR="$TEMPD"/run
|
|
podman run --name bankserver-db --rm --replace --detach -v "$RUN_DIR":/run/postgresql -e POSTGRES_USER=bankserver -e POSTGRES_HOST_AUTH_METHOD=trust postgres
|
|
sleep 5
|
|
fi
|
|
fi
|
|
|
|
function cleanup {
|
|
if [ ! -z "${APP_RUNNING:-}" ]; then
|
|
if [ ! -z "${CI:-}" ]; then
|
|
echo "Stopping app instance"
|
|
podman stop bankserver -t 2
|
|
else
|
|
pkill -P $JOB_PID
|
|
fi
|
|
fi
|
|
|
|
if [ ! -z "${DB_RUNNING:-}" ]; then
|
|
echo "Stopping database"
|
|
podman stop bankserver-db -t 2
|
|
fi
|
|
|
|
if [ ! -z "${TEMPD:-}" ]; then
|
|
rm -rf "$TEMPD"
|
|
fi
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
HOST="http://[::1]:3845"
|
|
|
|
wait_for_url () {
|
|
echo "Testing $1..."
|
|
printf 'GET %s\nHTTP 308' "$1" | hurl --retry "$2";
|
|
return 0
|
|
}
|
|
|
|
echo "Starting application"
|
|
|
|
APP_RUNNING="1"
|
|
if [ ! -z "${CI:-}" ]; then
|
|
echo $RUN_DIR
|
|
ls -la $RUN_DIR
|
|
podman run --name bankserver --rm --replace --detach --env-file $ENV_FILE --network host -v "$RUN_DIR":/run/postgresql --publish 3845:3845 --pull never bankserver:latest
|
|
else
|
|
just dev &
|
|
JOB_PID=$!
|
|
fi
|
|
|
|
echo "Waiting for app instance to be ready"
|
|
wait_for_url "$HOST" 20
|
|
|
|
echo "Creating dummy users"
|
|
hurl --variable host="$HOST" --error-format long tests/dummy-users.hurl
|
|
|
|
echo "Running tests"
|
|
hurl --variable host="$HOST" --test --error-format long --color --report-html tests/report tests/integration/*.hurl || true
|