Commit 3fedd74b authored by Martin Pool's avatar Martin Pool

Clean up Phil's test more.

Make the checkit() routine more generic.

Split out ssh tests.
parent 78ffe478
...@@ -9,65 +9,20 @@ ...@@ -9,65 +9,20 @@
# #
# #
RSYNC="$rsync_bin"
. "$suitedir/rsync.fns" . "$suitedir/rsync.fns"
hands_setup 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)."
fi
return 1
fi
}
checkforlogs() { checkforlogs() {
# skip it if we're under debian-test # skip it if we're under debian-test
if test -n "${Debian}" ; then return 0 ; fi if test -n "${Debian}" ; then return 0 ; fi
if [ -f $1 ] ; then if [ -f $1 -a -s $1 ] ; then
cat <<EOF echo "Failures have occurred. $1 follows:" >&2
cat $1 >&2
Failures have occured. exit 1
You can find the output of the tests in these files:
$@
EOF
exit 1
else else
rm -rf ${TMP}
echo "" echo ""
echo "Tests Completed Successfully :-)" echo "Tests Completed Successfully :-)"
fi fi
...@@ -98,7 +53,7 @@ runtest "long paths" 'checkit "$RSYNC --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${T ...@@ -98,7 +53,7 @@ runtest "long paths" 'checkit "$RSYNC --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${T
rm -rf ${TO} rm -rf ${TO}
mkdir -p ${FROM}2/dir/subdir mkdir -p ${FROM}2/dir/subdir
cp -a ${FROM}/dir/subdir/subsubdir ${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}' 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 rm -r ${FROM}2
......
#! /bin/sh
. rsync_fns
echo $0 running
"$rsync_bin" --version || exit 1
...@@ -9,6 +9,7 @@ FROM=${TMP}/from ...@@ -9,6 +9,7 @@ FROM=${TMP}/from
TO=${TMP}/to TO=${TMP}/to
F1=text1 F1=text1
LOG=${TMP}/log LOG=${TMP}/log
RSYNC="$rsync_bin"
runtest() { runtest() {
echo $ECHO_N "Test $1: $ECHO_C" echo $ECHO_N "Test $1: $ECHO_C"
...@@ -40,3 +41,45 @@ hands_setup() { ...@@ -40,3 +41,45 @@ hands_setup() {
mkdir ${FROM}/dir/subdir/subsubdir2 mkdir ${FROM}/dir/subdir/subsubdir2
ls -lt /bin > ${FROM}/dir/subdir/subsubdir2/bin-lt-list 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
}
#!/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}'
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment