gristlabs_grist-core/test/test_under_docker.sh

68 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# This runs browser tests with the server started using docker, to
# catch any configuration problems.
# Run with MOCHA_WEBDRIVER_HEADLESS=1 for headless operation.
# Run with DEBUG=1 for server logs.
# Settings for script robustness
set -o pipefail # trace ERR through pipes
set -o nounset # same as set -u : treat unset variables as an error
set -o errtrace # same as set -E: inherit ERR trap in functions
set -o errexit # same as set -e: exit on command failures
trap 'cleanup' EXIT
trap 'echo "Exiting on SIGINT"; exit 1' INT
trap 'echo "Exiting on SIGTERM"; exit 1' TERM
PORT=8585
DOCKER_CONTAINER=grist-core-test
DOCKER_PID=""
cleanup() {
return_value=$?
docker rm -f $DOCKER_CONTAINER
if [ -n "$DOCKER_PID" ]; then
wait $DOCKER_PID || echo "docker container gone"
fi
echo "Cleaned up docker container, bye."
exit $return_value
}
GRIST_LOG_LEVEL="error"
if [[ "${DEBUG:-}" == 1 ]]; then
GRIST_LOG_LEVEL=""
fi
docker run --name $DOCKER_CONTAINER --rm \
--env VERBOSE=${DEBUG:-} \
-p $PORT:$PORT --env PORT=$PORT \
--env GRIST_SESSION_COOKIE=grist_test_cookie \
--env GRIST_TEST_LOGIN=1 \
--env GRIST_LOG_LEVEL=$GRIST_LOG_LEVEL \
--env GRIST_LOG_SKIP_HTTP=${DEBUG:-false} \
--env TEST_SUPPORT_API_KEY=api_key_for_support \
${TEST_IMAGE:-gristlabs/grist} &
DOCKER_PID="$!"
echo "[waiting for server]"
while true; do
curl -s http://localhost:$PORT/status && break
sleep 1
done
echo ""
echo "[server found]"
MOCHA=mocha
# Test if we have mocha available as a command
if ! type $MOCHA > /dev/null 2>&1; then
echo "Mocha not found, using from ./node_modules/.bin/mocha"
MOCHA=./node_modules/.bin/mocha
fi
TEST_ADD_SAMPLES=1 TEST_ACCOUNT_PASSWORD=not-needed \
HOME_URL=http://localhost:8585 \
GRIST_SESSION_COOKIE=grist_test_cookie \
GRIST_TEST_LOGIN=1 \
NODE_PATH=_build:_build/stubs \
$MOCHA _build/test/nbrowser/*.js "$@"