Add an "unsafe" symlink to the symlink test case so we can see what happens.
[rsync/rsync.git] / runtests.sh
index 1e11f6b..ab6f77a 100755 (executable)
 # 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
 
@@ -153,16 +160,18 @@ missing=0
 passed=0
 failed=0
 
-scratchdir=./testtmp
-[ -d "$scratchdir" ] && rm -r "$scratchdir"
-mkdir "$scratchdir"
-scratchdir=`cd $scratchdir && pwd`
+scratchdir="`pwd`"/testtmp
 echo "    scratchdir=$scratchdir"
 
 suitedir="$srcdir/testsuite"
 
 export scratchdir suitedir
 
+clean_scratch() {
+    [ -d "$scratchdir" ] && rm -rf "$scratchdir"
+    mkdir "$scratchdir"
+}
+
 if [ "x$whichtests" = x ]
 then
     whichtests="*.test"
@@ -173,10 +182,11 @@ do
     testbase=`echo $testscript | sed 's!.*/!!'`
 
     echo "----- $testbase starting"
+    clean_scratch
 
-    if sh $RUNSHFLAGS "$testscript"
+    if sh $RUNSHFLAGS "$testscript" >"$scratchdir/test.log"  2>&1
     then
-       echo "----- $testbase completed succesfully"
+       echo "----- $testbase completed successfully"
        passed=`expr $passed + 1`
     else 
        case $? in
@@ -185,7 +195,9 @@ do
            skipped=`expr $skipped + 1`
            ;;
        *)
-           echo "----- $testbase failed!"
+           echo "----- $testbase failed: log follows"
+           cat "$scratchdir/test.log"
+           echo "----- $testbase log ends"
            failed=`expr $failed + 1`
            if [ "x$nopersist" = "xyes" ]
            then
@@ -208,7 +220,6 @@ echo '------------------------------------------------------------'
 # we want, and if we just call expr then this script will always fail,
 # because -e is set.
 
-set -x
 result=`expr $failed + $missing || true`
 echo "overall result is $result"
 exit $result