#!/bin/bash set -e export POSTGRES_PASSWORD="uleash" function getDockerDBPort() { case "$OSTYPE" in darwin*) echo `docker ps| grep unleash-post| awk '{print $(NF-1)}'| awk -F "->" '{print $1}'| awk -F \: '{print $4}'`;; # solaris*) echo "SOLARIS" ;; # linux*) echo "LINUX" ;; # bsd*) echo "BSD" ;; # msys*) echo "WINDOWS" ;; # cygwin*) echo "ALSO WINDOWS" ;; *) echo `docker ps| grep unleash-post| awk '{print $(NF-1)}'| awk -F "->" '{print $1}'| awk -F \: '{print $2}'`;; esac } if docker ps | grep unleash-postgres > /dev/null; then echo "unleash-postgress is already running" else echo "starting postgres in docker " HASH=`docker run -P --name unleash-postgres -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD -d postgres:10` fi export PGPORT=$(getDockerDBPort) if [ -z "$PGPORT" ]; then echo "could not find PGPORT! is postgres running?" exit 1 fi echo "PGPORT: $PGPORT" echo "" echo "Waiting for postgres to start..." function isPostgresAvailable() { echo "polling $1:$2" case "$OSTYPE" in darwin*) nc -z $1 $2;; # solaris*) echo "SOLARIS" ;; # linux*) echo "LINUX" ;; # bsd*) echo "BSD" ;; # msys*) echo "WINDOWS" ;; # cygwin*) echo "ALSO WINDOWS" ;; *) netcat -z $1 $2;; esac } if [ -z "$DOCKER_HOST" ] then export database_host="127.0.0.1" else export database_host=$(echo $DOCKER_HOST |awk -F \/ '{print $NF}'| awk -F \: '{print $1}') fi export TEST_DATABASE_URL=postgres://postgres:$POSTGRES_PASSWORD@$database_host:$PGPORT/postgres for i in `seq 1 120`; do # echo -n "." sleep 1 isPostgresAvailable $database_host $PGPORT && echo "postgres is up and running in docker in $i seconds!" && break done echo "running migrations..." DATABASE_URL=$TEST_DATABASE_URL npm run db-migrate -- up echo "running tests..." yarn test echo "cleanup..." docker stop $HASH docker rm $HASH echo "done"