|
|
|
@ -12,13 +12,17 @@ POSTGRES_CONFIG='{"client":"pg","connection":{"host":"localhost","port":9432,"us |
|
|
|
|
|
|
|
|
|
DO_SQLITE= |
|
|
|
|
DO_POSTGRES= |
|
|
|
|
START_POSTGRES= |
|
|
|
|
START_POSTGRES_TESTCONTAINER= |
|
|
|
|
|
|
|
|
|
usage() { |
|
|
|
|
cat << EOF | echo |
|
|
|
|
This tool runs MuDBase's Jasmine tests. Different database back-ends can be selected (multiple is allowed too). |
|
|
|
|
Options: |
|
|
|
|
-s,--sqlite Use SQLite in memory for testing. |
|
|
|
|
-p,--postgres Use Postgres for testing. Spins up a temporary Postgres container on localhos, port 9432. |
|
|
|
|
-s,--sqlite Use SQLite in memory for testing. |
|
|
|
|
-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. |
|
|
|
|
EOF |
|
|
|
|
} |
|
|
|
@ -35,6 +39,14 @@ while (( "$#" )); do |
|
|
|
|
DO_POSTGRES=1 |
|
|
|
|
shift |
|
|
|
|
;; |
|
|
|
|
-sp|--start-postgres) |
|
|
|
|
START_POSTGRES=1 |
|
|
|
|
shift |
|
|
|
|
;; |
|
|
|
|
-spt|--start-postgres-testcontainer) |
|
|
|
|
START_POSTGRES_TESTCONTAINER=1 |
|
|
|
|
shift |
|
|
|
|
;; |
|
|
|
|
*) # preserve positional arguments |
|
|
|
|
echo "Preserving params: $1" |
|
|
|
|
PARAMS="$PARAMS \"$1\"" |
|
|
|
@ -51,27 +63,45 @@ if [ ! -z "${DO_SQLITE}" ]; then |
|
|
|
|
SQLITE_RESULT=$(echo $?) |
|
|
|
|
fi |
|
|
|
|
if [ ! -z "${DO_POSTGRES}" ]; then |
|
|
|
|
# Fire up a test Postgres. |
|
|
|
|
docker pull postgres:12 |
|
|
|
|
CONTAINERID=$(docker create --rm \ |
|
|
|
|
--env POSTGRES_USER=mudbase \ |
|
|
|
|
--env POSTGRES_PASSWORD=mudbase \ |
|
|
|
|
--env POSTGRES_DB=mudbase \ |
|
|
|
|
-p 9432:5432 \ |
|
|
|
|
postgres:12) |
|
|
|
|
docker start ${CONTAINERID} |
|
|
|
|
trap "docker stop ${CONTAINERID}" EXIT |
|
|
|
|
if [ ! -z "${START_POSTGRES}" ]; then |
|
|
|
|
# Fire up a test Postgres. |
|
|
|
|
docker pull postgres:12 |
|
|
|
|
CONTAINERID=$(docker create --rm \ |
|
|
|
|
--env POSTGRES_USER=mudbase \ |
|
|
|
|
--env POSTGRES_PASSWORD=mudbase \ |
|
|
|
|
--env POSTGRES_DB=mudbase \ |
|
|
|
|
-p 9432:5432 \ |
|
|
|
|
postgres:12) |
|
|
|
|
docker start ${CONTAINERID} |
|
|
|
|
trap "docker stop ${CONTAINERID}" EXIT |
|
|
|
|
|
|
|
|
|
# Wait for postgres to be ready. |
|
|
|
|
while [ -z "$(docker logs ${CONTAINERID} | grep 'ready to accept connections')" ]; do |
|
|
|
|
sleep 1; |
|
|
|
|
done |
|
|
|
|
# Wait for postgres to be ready. |
|
|
|
|
while true; do |
|
|
|
|
pg_isready -d mudbase -h localhost -p 9432 -U mudbase |
|
|
|
|
[ "$(echo $?)" == "0" ] && break |
|
|
|
|
sleep 1 |
|
|
|
|
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 "$@" |
|
|
|
|
POSTGRES_RESULT=$(echo $?) |
|
|
|
|
|
|
|
|
|
docker stop ${CONTAINERID} |
|
|
|
|
trap - EXIT |
|
|
|
|
if [ ! -z "${START_POSTGRES}" ]; then |
|
|
|
|
docker stop ${CONTAINERID} |
|
|
|
|
trap - EXIT |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
printf "Tests finished. Results:\n\n" |
|
|
|
@ -82,4 +112,8 @@ if [ ! -z "${DO_POSTGRES}" ]; then |
|
|
|
|
echo "Postgres: $([ ${POSTGRES_RESULT} == '1' ] && echo Fail || echo Success)" |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
popd |
|
|
|
|
popd |
|
|
|
|
|
|
|
|
|
[ "${SQLITE_RESULT}" == '1' -o "${POSTGRES_RESULT}" == '1' ] && exit 1 |
|
|
|
|
exit 0 |
|
|
|
|
|
|
|
|
|