#!/bin/sh TZ=GMT0; export TZ srcdir=${SRCDIR-.} echo RUNNING from ${srcdir} # make it absolute srcdir=`cd $srcdir; pwd` # this should be run from the compiled build directory, # with srcdir= set to wherever the source code is. # not from the tests directory. echo RUNNING from ${srcdir} passedfile=$(pwd)/tests/.passed failedfile=$(pwd)/tests/.failed failureoutput=$(pwd)/tests/failure-outputs.txt mkdir -p tests/NEW mkdir -p tests/DIFF cat /dev/null > ${failureoutput} runComplexTests() { for i in ${srcdir}/tests/*.sh do case $i in ${srcdir}/tests/TEST*.sh) continue;; ${srcdir}/tests/\*.sh) continue;; esac echo Running $i (cd tests && sh $i ${srcdir}) done passed=`cat ${passedfile}` failed=`cat ${failedfile}` } runSimpleTests() { only=$1 cat ${srcdir}/tests/TESTLIST | while read name input output options do case $name in \#*) continue;; '') continue;; esac rm -f core [ "$only" != "" -a "$name" != "$only" ] && continue export SRCDIR=${srcdir} # I hate shells with their stupid, useless subshells. passed=`cat ${passedfile}` failed=`cat ${failedfile}` (cd tests # run TESTonce in tests directory if ${srcdir}/tests/TESTonce $name ${srcdir}/tests/$input ${srcdir}/tests/$output "$options" then passed=`expr $passed + 1` echo $passed >${passedfile} else failed=`expr $failed + 1` echo $failed >${failedfile} fi) [ "$only" != "" -a "$name" = "$only" ] && break done # I hate shells with their stupid, useless subshells. passed=`cat ${passedfile}` failed=`cat ${failedfile}` } passed=0 failed=0 echo $passed >${passedfile} echo $failed >${failedfile} if [ $# -eq 0 ] then runComplexTests runSimpleTests elif [ $# -eq 1 ] then runSimpleTests $1 else echo "Usage: $0 [test_name]" exit 30 fi # exit with number of failing tests. echo '------------------------------------------------' printf "%4u tests failed\n" $failed printf "%4u tests passed\n" $passed echo cat ${failureoutput} echo echo exit $failed