Attempt Postgres CI build.

pull/14/head
Sander Vocke 5 years ago
parent 85a0b0671f
commit 41a0987d02
  1. 10
      .drone.yml
  2. 38
      server/test/test.sh

@ -9,10 +9,16 @@ steps:
- npm install - npm install
- cd server && npm install; cd .. - cd server && npm install; cd ..
- name: back-end test - name: back-end test (SQLite3)
image: node image: node
commands: commands:
- cd server && npm test; cd .. - cd server && ./test/test.sh --sqlite ; cd ..
- name: back-end test (PostgreSQL)
image: node
commands:
- POSTGRES_USER=mudbase POSTGRES_DATABASE=mudbase POSTGRES_DB=mudbase \
cd server && ./test/test.sh --postgres --start-postgres-testcontainer ; cd ..
--- ---
kind: pipeline kind: pipeline

@ -12,6 +12,8 @@ POSTGRES_CONFIG='{"client":"pg","connection":{"host":"localhost","port":9432,"us
DO_SQLITE= DO_SQLITE=
DO_POSTGRES= DO_POSTGRES=
START_POSTGRES=
START_POSTGRES_TESTCONTAINER=
usage() { usage() {
cat << EOF | echo cat << EOF | echo
@ -19,6 +21,8 @@ This tool runs MuDBase's Jasmine tests. Different database back-ends can be sele
Options: Options:
-s,--sqlite Use SQLite in memory for testing. -s,--sqlite Use SQLite in memory for testing.
-p,--postgres Use Postgres for testing. Spins up a temporary Postgres container on localhos, port 9432. -p,--postgres Use Postgres for testing. Spins up a temporary Postgres container on localhos, port 9432.
-sp,--start-postgres Start its own Postgres Docker container for testing against.
-spt,--start-postgres-testcontainer Assume running in the sandervocke/postgres_node container. Spin up a PG process.
any other option is passed on to Jasmine. any other option is passed on to Jasmine.
EOF EOF
} }
@ -35,6 +39,14 @@ while (( "$#" )); do
DO_POSTGRES=1 DO_POSTGRES=1
shift shift
;; ;;
-sp|--start-postgres)
START_POSTGRES=1
shift
;;
-spt|--start-postgres-testcontainer)
START_POSTGRES_TESTCONTAINER=1
shift
;;
*) # preserve positional arguments *) # preserve positional arguments
echo "Preserving params: $1" echo "Preserving params: $1"
PARAMS="$PARAMS \"$1\"" PARAMS="$PARAMS \"$1\""
@ -51,6 +63,7 @@ if [ ! -z "${DO_SQLITE}" ]; then
SQLITE_RESULT=$(echo $?) SQLITE_RESULT=$(echo $?)
fi fi
if [ ! -z "${DO_POSTGRES}" ]; then if [ ! -z "${DO_POSTGRES}" ]; then
if [ ! -z "${START_POSTGRES}" ]; then
# Fire up a test Postgres. # Fire up a test Postgres.
docker pull postgres:12 docker pull postgres:12
CONTAINERID=$(docker create --rm \ CONTAINERID=$(docker create --rm \
@ -63,16 +76,33 @@ if [ ! -z "${DO_POSTGRES}" ]; then
trap "docker stop ${CONTAINERID}" EXIT trap "docker stop ${CONTAINERID}" EXIT
# Wait for postgres to be ready. # Wait for postgres to be ready.
while [ -z "$(docker logs ${CONTAINERID} | grep 'ready to accept connections')" ]; do while true; do
sleep 1; pg_isready -d mudbase -h localhost -p 9432 -U mudbase
[ "$(echo $?)" == "0" ] && break
sleep 1
done done
elif [ ! -z "${START_POSTGRES_TESTCONTAINER}" ]; then
# Fire up a test Postgres process.
docker_entrypoint.sh postgres &
PID=$(echo $!)
trap "kill $PID" EXIT
# Wait for postgres to be ready.
while true; do
pg_isready -d mudbase -h localhost -p 5432 -U mudbase
[ "$(echo $?)" == "0" ] && break
sleep 1
done
fi
MUDBASE_DB_CONFIG="$POSTGRES_CONFIG" ./node_modules/.bin/ts-node node_modules/jasmine/bin/jasmine --config=test/jasmine.json "$@" MUDBASE_DB_CONFIG="$POSTGRES_CONFIG" ./node_modules/.bin/ts-node node_modules/jasmine/bin/jasmine --config=test/jasmine.json "$@"
POSTGRES_RESULT=$(echo $?) POSTGRES_RESULT=$(echo $?)
if [ ! -z "${START_POSTGRES}" ]; then
docker stop ${CONTAINERID} docker stop ${CONTAINERID}
trap - EXIT trap - EXIT
fi fi
fi
printf "Tests finished. Results:\n\n" printf "Tests finished. Results:\n\n"
if [ ! -z "${DO_SQLITE}" ]; then if [ ! -z "${DO_SQLITE}" ]; then
@ -83,3 +113,7 @@ if [ ! -z "${DO_POSTGRES}" ]; then
fi fi
popd popd
[ "${SQLITE_RESULT}" == '1' -o "${POSTGRES_RESULT}" == '1' ] && exit 1
exit 0

Loading…
Cancel
Save