#!/usr/bin/env bash # Run test_*.sh tests, stop on error, verbose logging, no pass/fail summary. # # This script requires the user to be in the sudo group. # # The 'pattern' variable determines which test files to execute. # By default, run all the tests in the test_*.sh files in this directory. : ${pattern:=test_*.sh} # You can specify tests files to exclude using the 'SKIPLIST' variable in a # site.sh file. See example in README.md. Files excluded by the 'SKIPLIST' # variable have precedence over files included by the 'pattern' variable. # This script does not take arguments, so if arguments exist, print the Usage # in http://docopt.org/ format. if [ $# -gt 0 ]; then echo "Usage:" echo " $0 # Run all 'test_*.sh' files" echo " pattern= $0 # Run only files matching the pattern" echo "" echo "Example:" echo " ${0} 2>&1 | tee test.log # Run all tests, output to 'test.log'" echo " pattern=test_feature.sh ${0} # Run only the tests in 'test_feature.sh'" exit -1 fi allerr=0 testnr=0 for test in $pattern; do if [ $testnr != 0 ]; then echo; fi testfile=$test . ./$test errcode=$? if [ $errcode -ne 0 ]; then allerr=1 echo -e "\e[31mError in $test errcode=$errcode" echo -ne "\e[0m" exit $errcode fi done if [ $allerr -eq 0 ]; then echo "OK, ${testnr} tests" else echo -e "\e[31mError" echo -ne "\e[0m" exit -1 fi