# Copyright (C) 2001 by Martin Pool <mbp@samba.org>
# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version
-# 2.1 as published by the Free Software Foundation.
+# it under the terms of the GNU General Public License version
+# 2 as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# You cannot use "function foo {" syntax, but must instead say "foo()
# {", or it breaks on FreeBSD.
+# BSD machines tend not to have "head" or "seq".
+
+# You cannot do "export VAR=VALUE" all on one line; the export must be
+# separate from the assignment. (SCO SysV)
+
+
+
+# STILL TO DO:
+
+# We need a good protection against tests that hang indefinitely.
+# Perhaps some combination of starting them in the background, wait,
+# and kill?
+
+# Perhaps we need a common way to cleanup tests. At the moment just
+# clobbering the directory when we're done should be enough.
+
+# If any of the targets fail, then (GNU?) Make returns 2, instead of
+# the return code from the failing command. This is fine, but it
+# means that the build farm just shows "2" for failed tests, not the
+# number of tests that actually failed. For more details we might
+# need to grovel through the log files to find a line saying how many
+# failed.
+
set -e
export scratchdir suitedir
-for testscript in $suitedir/*.test
+if [ "x$whichtests" = x ]
+then
+ whichtests="*.test"
+fi
+
+for testscript in $suitedir/$whichtests
do
testbase=`echo $testscript | sed 's!.*/!!'`
if sh $RUNSHFLAGS "$testscript"
then
- echo "----- $testbase completed succesfully"
+ echo "----- $testbase completed successfully"
passed=`expr $passed + 1`
else
case $? in
echo '------------------------------------------------------------'
echo "----- overall results:"
echo " $passed passed"
-echo " $failed failed"
-echo " $skipped skipped"
-echo " $missing missing"
+[ "$failed" -gt 0 ] && echo " $failed failed"
+[ "$skipped" -gt 0 ] && echo " $skipped skipped"
+[ "$missing" -gt 0 ] && echo " $missing missing"
echo '------------------------------------------------------------'
-exit `expr $failed + $missing`
+# OK, so expr exits with 0 if the result is neither null nor zero; and
+# 1 if the expression is null or zero. This is the opposite of what
+# we want, and if we just call expr then this script will always fail,
+# because -e is set.
+
+result=`expr $failed + $missing || true`
+echo "overall result is $result"
+exit $result