More test case work:
authorMartin Pool <mbp@samba.org>
Wed, 29 Aug 2001 08:13:19 +0000 (08:13 +0000)
committerMartin Pool <mbp@samba.org>
Wed, 29 Aug 2001 08:13:19 +0000 (08:13 +0000)
 * make sure to build rsync before running 'make check'

 * Put back in the loglevel concept from the samba scripts.  If >8,
   then turn on shell tracing.

 * Allow tests to return 77 if they want to count as 'skipped'.

 * Add more docs.

 * Mangle Phil's script to get ready to run on non-Linux systems: we
   need to not use shell functions, cp -a, etc.  Not there yet.

Makefile.in
runtests.sh
testsuite/hands.test
testsuite/rsync.fns

index d2799c7..f2b8c1a 100644 (file)
@@ -98,9 +98,16 @@ test: check
 # TODO: These targets both ought to depend on a set of test programs
 # to build, if any.
 
-check:
+# This depends on building rsync; if we need any helper programs it
+# should depend on them too.
+
+check: all
        rsync_bin=./rsync srcdir="$(srcdir)" $(srcdir)/runtests.sh
 
+# This does *not* depend on building or installing: you can use it to
+# check a version installed from a binary or some other source tree,
+# if you want.
+
 installcheck:
        rsync_bin="$(bindir)/rsync" srcdir="$(srcdir)" $(srcdir)/runtests.sh
 
index 2f67d45..39ca364 100755 (executable)
 # A scratch directory, 'testtmp', is created in the build directory to
 # hold working files.
 
-# Both this script and the Makefile have to be pretty conservative
-# about which Unix features they use.  
+# This script also uses the $loglevel environment variable.  1 is the
+# default value, and 10 the most verbose.  You can set this from the
+# Make command line.  It's also set by the build farm to give more
+# detail for failing builds.
+
+
+# NOTES FOR TEST CASES:
+
+# Each test case runs in its own shell. 
 
 # Exit codes: (passed back to build farm):
 
 #    1  tests failed
 #    2  error in starting tests
+#   77  this test skipped (random value unlikely to happen by chance, same as
+#       automake)
+
+# rsync.fns contains some general setup functions and definitions.
+
+
+# NOTES ON PORTABILITY:
+
+# Both this script and the Makefile have to be pretty conservative
+# about which Unix features they use.
+
+# We cannot count on Make exporting variables to commands, unless
+# they're explicitly given on the command line.
+
+# Also, we can't count on 'cp -a' or 'mkdir -p', although they're
+# pretty handy.
+
+# Eventually we would like to not count on shell functions.
 
 
 set -e
 
 . "./shconfig"
 
+RUNSHFLAGS='-e'
+
+if [ -n "$loglevel" ] && [ "$loglevel" -gt 8 ]
+then
+    RUNSHFLAGS="$RUNSHFLAGS -x"
+    set -x
+fi
 
 echo "============================================================"
 echo "$0 running in `pwd`"
@@ -98,7 +130,9 @@ mkdir "$scratchdir"
 echo "    scratchdir=$scratchdir"
 suitedir="$srcdir/testsuite"
 
-for testbase in rsync-hello hands
+export scratchdir suitedir
+
+for testbase in rsync-hello hands ssh-basic
 do
     testscript="$suitedir/$testbase.test"
     if test \! -f "$testscript" 
@@ -111,14 +145,21 @@ do
     echo "------------------------------------------------------------"
     echo "----- $testbase running"
 
-    if sh "$testscript"
+    if sh $RUNSHFLAGS "$testscript"
     then
        echo "----- $testbase completed succesfully"
        passed=`expr $passed + 1`
-    else
-       echo "----- $testbase failed!"
-       failed=`expr $failed + 1`
-    fi 
+    else 
+       case $? in
+       77)
+           echo "----- $testbase skipped"
+           skipped=`expr $skipped + 1`
+           ;;
+       *)
+           echo "----- $testbase failed!"
+           failed=`expr $failed + 1`
+       esac
+    fi
 done
 
 echo '------------------------------------------------------------'
index ba1b176..55edab1 100644 (file)
 
 RSYNC="$rsync_bin"
 
-  runtest() {
-    echo $ECHO_N "Test $1: $ECHO_C"
-    eval "$2"
-  }
-  printmsg() {
-    echo ""
-    echo "**** ${1}^G ****"
-    echo ""  
-  }
-
-TMP=/tmp/rsync-test.$$
-FROM=${TMP}/from
-TO=${TMP}/to
-F1=text1
-LOG=${TMP}/log
-
-mkdir $TMP
-mkdir $FROM
-mkdir $TO
-
-# set up test data
-touch ${FROM}/empty
-mkdir ${FROM}/emptydir
-ps ax > ${FROM}/pslist
-
-# This might fail on systems that don't have -n
-echo $ECHO_N "This file has no trailing lf$ECHO_C" > ${FROM}/nolf
-ln -s nolf ${FROM}/nolf-symlink
-cat /etc/inittab /etc/services /etc/resolv.conf > ${FROM}/${F1}
-mkdir ${FROM}/dir
-cp ${FROM}/${F1} ${FROM}/dir
-mkdir ${FROM}/dir/subdir
-mkdir ${FROM}/dir/subdir/subsubdir
-ls -ltr /etc > ${FROM}/dir/subdir/subsubdir/etc-ltr-list
-mkdir ${FROM}/dir/subdir/subsubdir2
-ls -lt /bin > ${FROM}/dir/subdir/subsubdir2/bin-lt-list
+. "$suitedir/rsync.fns"
+
+hands_setup
 
 checkit() {
   testnum=`expr 0${testnum} + 1`
@@ -128,20 +95,6 @@ date > ${LONGDIR}/1
 ls -la / > ${LONGDIR}/2
 runtest "long paths" 'checkit "$RSYNC --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${TO}'
 
-if type ssh >/dev/null 2>&1; then
-  if [ "`ssh -o'BatchMode yes' localhost echo yes 2>/dev/null`" = "yes" ]; then
-  rm -rf ${TO}
-    runtest "ssh: basic test" 'checkit "$RSYNC -avH -e ssh --rsync-path=$RSYNC ${FROM}/ localhost:${TO}" ${FROM}/ ${TO}'
-
-    mv ${TO}/${F1} ${TO}/ThisShouldGo
-    runtest "ssh: renamed file" 'checkit "$RSYNC --delete -avH -e ssh --rsync-path=$RSYNC ${FROM}/ localhost:${TO}" ${FROM}/ ${TO}'
-  else
-  printmsg "Skipping SSH tests because ssh conection to localhost not authorised"
-  fi
-else
-  printmsg "Skipping SSH tests because ssh is not in the path"
-fi
-
 rm -rf ${TO}
 mkdir -p ${FROM}2/dir/subdir
 cp -a ${FROM}/dir/subdir/subsubdir ${FROM}2/dir/subdir
index 0cce310..b00f8ec 100644 (file)
@@ -3,3 +3,40 @@
 # Copyright (C) 2001 by Martin Pool <mbp@samba.org>
 
 # General-purpose test functions for rsync.
+
+TMP="$scratchdir"
+FROM=${TMP}/from
+TO=${TMP}/to
+F1=text1
+LOG=${TMP}/log
+
+runtest() {
+    echo $ECHO_N "Test $1: $ECHO_C"
+    eval "$2"
+}
+
+printmsg() {
+    echo "$1"
+}
+
+hands_setup() {
+    [ -d $FROM ] || mkdir $FROM
+    [ -d $TO ] || mkdir $TO
+
+    # set up test data
+    touch ${FROM}/empty
+    mkdir ${FROM}/emptydir
+    ps ax > ${FROM}/pslist
+
+    # This might fail on systems that don't have -n
+    echo $ECHO_N "This file has no trailing lf$ECHO_C" > ${FROM}/nolf
+    ln -s nolf ${FROM}/nolf-symlink
+    cat /etc/inittab /etc/services /etc/resolv.conf > ${FROM}/${F1}
+    mkdir ${FROM}/dir
+    cp ${FROM}/${F1} ${FROM}/dir
+    mkdir ${FROM}/dir/subdir
+    mkdir ${FROM}/dir/subdir/subsubdir
+    ls -ltr /etc > ${FROM}/dir/subdir/subsubdir/etc-ltr-list
+    mkdir ${FROM}/dir/subdir/subsubdir2
+    ls -lt /bin > ${FROM}/dir/subdir/subsubdir2/bin-lt-list
+}