#!/bin/bash # script/test: Run test suite for application. Optionally pass in a path to an # individual test file to run a single test. set -e docker_compose="docker-compose --file docker-compose.yml" function cleanup() { $docker_compose down } function die() { echo $@ exit 1 } trap cleanup EXIT script/poll-for-db if [ "$RAILS_ENV" = "test" ] || [ "$RACK_ENV" = "test" ]; then # if executed and the environment is already set to `test`, then we want a # clean from scratch application. This almost always means a ci environment, # since we set the environment to `test` directly in `script/cibuild`. script/setup else # if the environment isn't set to `test`, set it to `test` and update the # application to ensure all dependencies are met as well as any other things # that need to be up to date, like db migrations. The environment not having # already been set to `test` almost always means this is being called on its # own from a `development` environment. export RAILS_ENV="test" RACK_ENV="test" script/update fi echo "==> Running tests…" if [ -n "$1" ]; then # pass arguments to test call. This is useful for calling a single test. $docker_compose run web bin/rake test "$1" else $docker_compose run web bin/rake test fi