Add a little implementation of ls(1) so that we can look at all and
[rsync/rsync.git] / runtests.sh
index 59a34fa..05ffc90 100755 (executable)
 # 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.
+
 
 set -e
 
@@ -147,7 +163,12 @@ suitedir="$srcdir/testsuite"
 
 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!.*/!!'`
 
@@ -182,4 +203,11 @@ echo "      $passed passed"
 [ "$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