clixon/test/all.sh
Jonathan Ben-Avraham e6899cc3f5 Additional documentation for test scripts
Added documentation in comments in test scripts, added example site.sh,
moved evaluation of site.sh later in lib.sh to allow site.sh to override
more lib.sh variables.
2020-11-07 21:44:59 +02:00

50 lines
1.4 KiB
Bash
Executable file

#!/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=<Bash glob 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
err=0
testnr=0
for test in $pattern; do
if [ $testnr != 0 ]; then echo; fi
testfile=$test
. ./$test
errcode=$?
if [ $errcode -ne 0 ]; then
err=1
echo -e "\e[31mError in $test errcode=$errcode"
echo -ne "\e[0m"
exit $errcode
fi
done
if [ $err -eq 0 ]; then
echo OK
else
echo -e "\e[31mError"
echo -ne "\e[0m"
exit -1
fi