diff options
Diffstat (limited to '')
-rwxr-xr-x | tests/deckard/contrib/libfaketime/test/testframe.sh | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/tests/deckard/contrib/libfaketime/test/testframe.sh b/tests/deckard/contrib/libfaketime/test/testframe.sh new file mode 100755 index 0000000..22975b6 --- /dev/null +++ b/tests/deckard/contrib/libfaketime/test/testframe.sh @@ -0,0 +1,99 @@ +#! /bin/bash +# testframe.sh DIR +# bare-bones testing framework. +# run the test suites in the given DIR; +# exit with nonzero status if any of them failed. +# see README.testframe.txt for details. +# + +# echo labelled error/warning message to stderr +report() +{ + echo $PROG: $* 1>&2 +} + +# echo OK or BAD depending on argument (0 or not) +status_word() +{ + if [ "$1" -eq 0 ]; then + echo OK + else + echo BAD + fi +} + +# run the given testsuite, return nonzero if any testcase failed. +run_testsuite() +{ + typeset testsuite="$1" + + NFAIL=0 + NSUCC=0 + + # add testsuite dir to PATH for convenience + typeset dir=$(dirname $testsuite) + PATH=$dir:$PATH + . testframe.inc + if [ -f $dir/common.inc ]; then + . $dir/common.inc + fi + . $testsuite + export TESTSUITE_NAME=$testsuite + + echo "" + echo "# Begin $testsuite" + + run + typeset runstat=$? + + echo "# $testsuite summary: $NSUCC succeeded, $NFAIL failed" + if [ $runstat -ne 0 ]; then + ((NFAIL++)) + report "error: $testsuite run exit_status=$runstat!" + fi + echo "# End $testsuite -" $(status_word $NFAIL) + [ $NFAIL -eq 0 ] +} + +# +# list all testsuite scripts in the given directories. +# a testsuite file must be a bash script whose name is of the form test_*.sh . +# +list_testsuites() +{ + for dir in "$@"; do + ls $dir/test_*.sh 2>/dev/null + done +} + +main() +{ + TS_NFAIL=0 + TS_NSUCC=0 + + echo "# Begin Test Suites in $*" + typeset testsuites=$(list_testsuites "$@") + + if [ -z "$testsuites" ]; then + report "error: no testsuites found" + exit 1 + fi + + for testsuite in $testsuites; do + if run_testsuite $testsuite; then + ((TS_NSUCC++)) + else + ((TS_NFAIL++)) + fi + done + + echo "" + echo "# Test Suites summary: $TS_NSUCC succeeded, $TS_NFAIL failed" + echo "# End Test Suites -" $(status_word $TS_NFAIL) + [ $TS_NFAIL -eq 0 ] +} + +# ----- start of mainline code +PROG=${0##*/} + +main "${@:-.}" |