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
pull/3425/head
dullbananas 2023-06-30 00:50:30 -07:00 committed by GitHub
parent 3159eedd99
commit 7d3894d5dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 3 deletions

4
.gitignore vendored
View File

@ -26,3 +26,7 @@ pictrs/
# The generated typescript bindings # The generated typescript bindings
bindings bindings
# Database cluster and sockets for testing
dev_pgdata/
*.PGSQL.*

View File

@ -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

View File

@ -1,13 +1,15 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -e
CWD="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
cd $CWD/../
PACKAGE="$1" PACKAGE="$1"
echo "$PACKAGE" echo "$PACKAGE"
psql -U lemmy -d postgres -c "DROP DATABASE lemmy;" source scripts/start_dev_db.sh
psql -U lemmy -d postgres -c "CREATE DATABASE lemmy;"
export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
# tests are executed in working directory crates/api (or similar), # tests are executed in working directory crates/api (or similar),
# so to load the config we need to traverse to the repo root # so to load the config we need to traverse to the repo root
export LEMMY_CONFIG_LOCATION=../../config/config.hjson export LEMMY_CONFIG_LOCATION=../../config/config.hjson
@ -21,3 +23,6 @@ else
fi fi
# Add this to do printlns: -- --nocapture # Add this to do printlns: -- --nocapture
pg_ctl stop
rm -rf $PGDATA