diff --git a/.gitignore b/.gitignore index 0461784f0..e48248836 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,7 @@ pictrs/ # The generated typescript bindings bindings + +# Database cluster and sockets for testing +dev_pgdata/ +*.PGSQL.* diff --git a/scripts/start_dev_db.sh b/scripts/start_dev_db.sh new file mode 100644 index 000000000..f192defa6 --- /dev/null +++ b/scripts/start_dev_db.sh @@ -0,0 +1,24 @@ +# This script is meant to be run with `source` so it can set environment variables. + +export PGDATA="$PWD/dev_pgdata" +export PGHOST=$PWD +export LEMMY_DATABASE_URL="postgresql://lemmy:password@/lemmy?host=$PWD" + +# If cluster exists, stop the server and delete the cluster +if [ -d $PGDATA ] +then + # Prevent `stop` from failing if server already stopped + pg_ctl restart > /dev/null + pg_ctl stop + rm -rf $PGDATA +fi + +# Create cluster +initdb --username=postgres --auth=trust --no-instructions + +# Start server that only listens to socket in current directory +pg_ctl start --options="-c listen_addresses= -c unix_socket_directories=$PWD" > /dev/null + +# Setup database +psql -c "CREATE USER lemmy WITH PASSWORD 'password' SUPERUSER;" -U postgres +psql -c "CREATE DATABASE lemmy WITH OWNER lemmy;" -U postgres diff --git a/scripts/test.sh b/scripts/test.sh index f117238bd..2a5efb30d 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -1,13 +1,15 @@ #!/usr/bin/env bash set -e +CWD="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)" + +cd $CWD/../ + PACKAGE="$1" echo "$PACKAGE" -psql -U lemmy -d postgres -c "DROP DATABASE lemmy;" -psql -U lemmy -d postgres -c "CREATE DATABASE lemmy;" +source scripts/start_dev_db.sh -export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy # tests are executed in working directory crates/api (or similar), # so to load the config we need to traverse to the repo root export LEMMY_CONFIG_LOCATION=../../config/config.hjson @@ -21,3 +23,6 @@ else fi # Add this to do printlns: -- --nocapture + +pg_ctl stop +rm -rf $PGDATA