From 7d3894d5dd86b1b08cbe74904a852e4551110934 Mon Sep 17 00:00:00 2001 From: dullbananas Date: Fri, 30 Jun 2023 00:50:30 -0700 Subject: [PATCH] Automatically manage database when running scripts/test.sh (#3389) * Update .gitignore * Create start-dev-db.sh * Rename start-dev-db.sh to start_dev_db.sh * Update .gitignore * Update start_dev_db.sh * Update start_dev_db.sh * Update start_dev_db.sh * Update start_dev_db.sh * h * Update test.sh * Update start_dev_db.sh * made it work * Make test.sh work when run from scripts dir --- .gitignore | 4 ++++ scripts/start_dev_db.sh | 24 ++++++++++++++++++++++++ scripts/test.sh | 11 ++++++++--- 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 scripts/start_dev_db.sh 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