Make the checkit() routine more generic.
Split out ssh tests.
#
#
-RSYNC="$rsync_bin"
-
. "$suitedir/rsync.fns"
hands_setup
-checkit() {
- testnum=`expr 0${testnum} + 1`
- log=${LOG}.${testnum}
- failed=
- echo "Running: \"$1\"" >${log}
- echo "">>${log}
- eval "$1" >>${log} 2>&1
- status=$?
- if [ $status != 0 ]; then
- failed="YES";
- fi
- echo "-------------">>${log}
- echo "check how the files compare with diff:">>${log}
- echo "">>${log}
- diff -ur $2 $3 >>${log} 2>&1 || failed=YES
- echo "-------------">>${log}
- echo "check how the directory listings compare with diff:">>${log}
- echo "">>${log}
- ( cd $2 ; ls -laR ) > ${TMP}/ls-from 2>>${log}
- ( cd $3 ; ls -laR ) > ${TMP}/ls-to 2>>${log}
- diff -u ${TMP}/ls-from ${TMP}/ls-to >>${log} 2>&1 || failed=YES
- if [ -z "${failed}" ] ; then
- echo "${ECHO_T} done."
- rm $log
- return 0
- else
- if test -n "${Debian}" ; then
- cat ${log}
- rm ${log}
- else
- echo "${ECHO_T} FAILED (test # ${testnum} status=$status).\a"
- fi
- return 1
- fi
-}
-
checkforlogs() {
# skip it if we're under debian-test
if test -n "${Debian}" ; then return 0 ; fi
- if [ -f $1 ] ; then
- cat <<EOF
-
-Failures have occured.
-
-You can find the output of the tests in these files:
- $@
-EOF
- exit 1
+ if [ -f $1 -a -s $1 ] ; then
+ echo "Failures have occurred. $1 follows:" >&2
+ cat $1 >&2
+ exit 1
else
-
- rm -rf ${TMP}
echo ""
echo "Tests Completed Successfully :-)"
fi
rm -rf ${TO}
mkdir -p ${FROM}2/dir/subdir
cp -a ${FROM}/dir/subdir/subsubdir ${FROM}2/dir/subdir
-cp ${FROM}/dir/* ${FROM}2/dir 2>/dev/null
+cp ${FROM}/dir/* ${FROM}2/dir || :
runtest "excludes" 'checkit "$RSYNC -vv -Hlrt --delete --include /dir/ --include /dir/\* --include /dir/\*/subsubdir --include /dir/\*/subsubdir/\*\* --exclude \*\* ${FROM}/dir ${TO}" ${FROM}2/ ${TO}'
rm -r ${FROM}2
--- /dev/null
+#! /bin/sh
+
+. rsync_fns
+
+echo $0 running
+
+"$rsync_bin" --version || exit 1
TO=${TMP}/to
F1=text1
LOG=${TMP}/log
+RSYNC="$rsync_bin"
runtest() {
echo $ECHO_N "Test $1: $ECHO_C"
mkdir ${FROM}/dir/subdir/subsubdir2
ls -lt /bin > ${FROM}/dir/subdir/subsubdir2/bin-lt-list
}
+
+
+###########################
+# Run a test (in '$1') then compare directories $2 and $3 to see if
+# there are any difference. If there are, explain them.
+
+checkit() {
+ log=${LOG}
+ failed=
+ # the log accumulates all output; we only display it if there
+ # is a problem.
+
+ echo "Running: \"$1\"" >${log}
+ echo "">>${log}
+ eval "$1" >>${log} 2>&1
+ status=$?
+ if [ $status != 0 ]; then
+ failed="YES";
+ fi
+
+ echo "-------------">>${log}
+ echo "check how the files compare with diff:">>${log}
+ echo "">>${log}
+ diff -ur $2 $3 >>${log} 2>&1 || failed=YES
+ echo "-------------">>${log}
+ echo "check how the directory listings compare with diff:">>${log}
+ echo "">>${log}
+ ( cd $2 ; ls -laR ) > ${TMP}/ls-from 2>>${log}
+ ( cd $3 ; ls -laR ) > ${TMP}/ls-to 2>>${log}
+ diff -u ${TMP}/ls-from ${TMP}/ls-to >>${log} 2>&1 || failed=YES
+ if [ -z "${failed}" ] ; then
+ echo "${ECHO_T} done."
+ rm $log
+ return 0
+ else
+ echo "${ECHO_T} failed!"
+ cat ${log}
+ rm ${log}
+ return 1
+ fi
+}
+
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 1998,1999 Philip Hands <phil@hands.com>
+# Copyright (C) 2001 by Martin Pool <mbp@samba.org>
+
+# This program is distributable under the terms of the GNU GPL (see
+# COPYING)
+
+# This script tests ssh, if possible. It's called by runtests.sh
+
+. "$suitedir/rsync.fns"
+
+if ! type ssh >/dev/null 2>&1; then
+ echo "Skipping SSH tests because ssh is not in the path"
+ exit 77
+fi
+
+if ! [ "`ssh -o'BatchMode yes' localhost echo yes 2>/dev/null`" = "yes" ]; then
+ echo "Skipping SSH tests because ssh conection to localhost not authorised"
+ exit 77
+fi
+
+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}'