parent
7b1b8e0fee
commit
4b5c1cdbda
2 changed files with 90 additions and 1 deletions
@ -0,0 +1,84 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
# Wrapper around the Jasmine test scripts. |
||||||
|
# Can test with different types of databases. |
||||||
|
|
||||||
|
SCRIPT=`realpath $0` |
||||||
|
SCRIPTPATH=`dirname $SCRIPT` |
||||||
|
SOURCEPATH="$SCRIPTPATH/.." |
||||||
|
|
||||||
|
SQLITE_CONFIG='{"client": "sqlite3", "connection": ":memory:"}' |
||||||
|
POSTGRES_CONFIG='{"client":"pg","connection":{"host":"localhost","port":9432,"user":"mudbase","password":"mudbase","database":"mudbase"}}' |
||||||
|
|
||||||
|
DO_SQLITE= |
||||||
|
DO_POSTGRES= |
||||||
|
|
||||||
|
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. |
||||||
|
any other option is passed on to Jasmine. |
||||||
|
EOF |
||||||
|
} |
||||||
|
|
||||||
|
# Argument parsing |
||||||
|
PARAMS="" |
||||||
|
while (( "$#" )); do |
||||||
|
case "$1" in |
||||||
|
-s|--sqlite) |
||||||
|
DO_SQLITE=1 |
||||||
|
shift |
||||||
|
;; |
||||||
|
-p|--postgres) |
||||||
|
DO_POSTGRES=1 |
||||||
|
shift |
||||||
|
;; |
||||||
|
*) # preserve positional arguments |
||||||
|
PARAMS="$PARAMS $1" |
||||||
|
shift |
||||||
|
;; |
||||||
|
esac |
||||||
|
done |
||||||
|
# Set positional arguments in their proper place |
||||||
|
eval set -- "$PARAMS" |
||||||
|
|
||||||
|
pushd $SOURCEPATH |
||||||
|
if [ ! -z "${DO_SQLITE}" ]; then |
||||||
|
MUDBASE_DB_CONFIG="$SQLITE_CONFIG" ./node_modules/.bin/ts-node node_modules/jasmine/bin/jasmine --config=test/jasmine.json $@ |
||||||
|
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 |
||||||
|
|
||||||
|
# Wait for postgres to be ready. |
||||||
|
while [ -z "$(docker logs ${CONTAINERID} | grep 'ready to accept connections')" ]; do |
||||||
|
sleep 1; |
||||||
|
done |
||||||
|
|
||||||
|
MUDBASE_DB_CONFIG="$POSTGRES_CONFIG" ./node_modules/.bin/ts-node node_modules/jasmine/bin/jasmine --config=test/jasmine.json $@ 2>&1 |
||||||
|
POSTGRES_RESULT=$(echo $?) |
||||||
|
|
||||||
|
docker stop ${CONTAINERID} |
||||||
|
trap - EXIT |
||||||
|
fi |
||||||
|
|
||||||
|
printf "Tests finished. Results:\n\n" |
||||||
|
if [ ! -z "${DO_SQLITE}" ]; then |
||||||
|
echo "SQLite: $([ ${SQLITE_RESULT} == '1' ] && echo Fail || echo Success)" |
||||||
|
fi |
||||||
|
if [ ! -z "${DO_POSTGRES}" ]; then |
||||||
|
echo "Postgres: $([ ${POSTGRES_RESULT} == '1' ] && echo Fail || echo Success)" |
||||||
|
fi |
||||||
|
|
||||||
|
popd |
Loading…
Reference in new issue