Commit c8313794 authored by Andrew Tridgell's avatar Andrew Tridgell

updated test suite from Phil.

parent d73ee7b7
#!/bin/sh #!/bin/sh
# # Copyright (C) 1998,1999 Philip Hands <phil@hands.com>
# Copyright (C) 1998 Philip Hands <http://www.hands.com/~phil/>
# #
# This program is distributable under the terms of the GNU GPL (see COPYING) # This program is distributable under the terms of the GNU GPL (see COPYING)
# #
...@@ -10,15 +9,33 @@ ...@@ -10,15 +9,33 @@
# #
# #
cat <<EOF # check if we are running under debian-test, and change behaviour to suit
if test -n "${DEBIANTEST_LIB}" ; then
# make sure rsync is installed
test -e /usr/bin/rsync || exit 0
. ${DEBIANTEST_LIB}/functions.sh
Debian=1
else
cat <<EOF
This set of tests is not completely portable. It is intended for developers This set of tests is not completely portable. It is intended for developers
not for end users. You may experience failures on some platforms that not for end users. You may experience failures on some platforms that
do not indicate a problem with rsync. do not indicate a problem with rsync.
EOF EOF
export PATH=.:$PATH
runtest() {
echo -n "Test $1: "
eval "$2"
}
printmsg() {
echo ""
echo "**** ${1}^G ****"
echo ""
}
fi
export PATH=.:$PATH
TMP=/tmp/rsync-test.$$ TMP=/tmp/rsync-test.$$
FROM=${TMP}/from FROM=${TMP}/from
TO=${TMP}/to TO=${TMP}/to
...@@ -38,10 +55,15 @@ ln -s nolf ${FROM}/nolf-symlink ...@@ -38,10 +55,15 @@ ln -s nolf ${FROM}/nolf-symlink
cat /etc/inittab /etc/services /etc/resolv.conf > ${FROM}/${F1} cat /etc/inittab /etc/services /etc/resolv.conf > ${FROM}/${F1}
mkdir ${FROM}/dir mkdir ${FROM}/dir
cp ${FROM}/${F1} ${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
checkit() { checkit() {
echo -n "Test $4: $5:" testnum=`expr 0${testnum} + 1`
log=${LOG}.$4 log=${LOG}.${testnum}
failed= failed=
echo "Running: \"$1\"" >${log} echo "Running: \"$1\"" >${log}
echo "">>${log} echo "">>${log}
...@@ -50,22 +72,33 @@ checkit() { ...@@ -50,22 +72,33 @@ checkit() {
echo "-------------">>${log} echo "-------------">>${log}
echo "check how the files compare with diff:">>${log} echo "check how the files compare with diff:">>${log}
echo "">>${log} echo "">>${log}
diff -ur $2 $3 >>${log} || failed=YES diff -ur $2 $3 >>${log} 2>&1 || failed=YES
echo "-------------">>${log} echo "-------------">>${log}
echo "check how the directory listings compare with diff:">>${log} echo "check how the directory listings compare with diff:">>${log}
echo "">>${log} echo "">>${log}
ls -la $2 > ${TMP}/ls-from ( cd $2 ; ls -laR ) > ${TMP}/ls-from 2>>${log}
ls -la $3 > ${TMP}/ls-to ( cd $3 ; ls -laR ) > ${TMP}/ls-to 2>>${log}
diff -u ${TMP}/ls-from ${TMP}/ls-to >>${log} || failed=YES diff -u ${TMP}/ls-from ${TMP}/ls-to >>${log} 2>&1 || failed=YES
if [ -z "${failed}" ] ; then if [ -z "${failed}" ] ; then
echo " done." test -z "${Debian}" && echo " done."
rm $log rm $log
return 0
else else
echo " FAILED." if test -n "${Debian}" ; then
cat ${log}
rm ${log}
else
echo " FAILED (test # ${testnum})."
fi
return 1
fi fi
} }
checkforlogs() { checkforlogs() {
# skip it if we're under debian-test
if test -n "${Debian}" ; then return 0 ; fi
if [ -f $1 ] ; then if [ -f $1 ] ; then
cat <<EOF cat <<EOF
...@@ -87,44 +120,45 @@ EOF ...@@ -87,44 +120,45 @@ EOF
# Main script starts here # Main script starts here
checkit "rsync -av ${FROM}/ ${TO}" ${FROM}/ ${TO} \ runtest "basic operation" 'checkit "rsync -av ${FROM}/ ${TO}" ${FROM}/ ${TO}'
1 "basic operation"
ln ${FROM}/pslist ${FROM}/dir ln ${FROM}/pslist ${FROM}/dir
checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \ runtest "hard links" 'checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO}'
2 "hard links"
rm ${TO}/${F1} rm ${TO}/${F1}
checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \ runtest "one file" 'checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO}'
3 "one file"
echo "extra line" >> ${TO}/${F1} echo "extra line" >> ${TO}/${F1}
checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \ runtest "extra data" 'checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO}'
4 "extra data"
cp ${FROM}/${F1} ${TO}/ThisShouldGo cp ${FROM}/${F1} ${TO}/ThisShouldGo
checkit "rsync --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \ runtest " --delete" 'checkit "rsync --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${TO}'
5 " --delete"
LONGDIR=${FROM}/This-is-a-directory-with-a-stupidly-long-name-created-in-an-attempt-to-provoke-an-error-found-in-2.0.11-that-should-hopefully-never-appear-again-if-this-test-does-its-job/This-is-a-directory-with-a-stupidly-long-name-created-in-an-attempt-to-provoke-an-error-found-in-2.0.11-that-should-hopefully-never-appear-again-if-this-test-does-its-job/This-is-a-directory-with-a-stupidly-long-name-created-in-an-attempt-to-provoke-an-error-found-in-2.0.11-that-should-hopefully-never-appear-again-if-this-test-does-its-job LONGDIR=${FROM}/This-is-a-directory-with-a-stupidly-long-name-created-in-an-attempt-to-provoke-an-error-found-in-2.0.11-that-should-hopefully-never-appear-again-if-this-test-does-its-job/This-is-a-directory-with-a-stupidly-long-name-created-in-an-attempt-to-provoke-an-error-found-in-2.0.11-that-should-hopefully-never-appear-again-if-this-test-does-its-job/This-is-a-directory-with-a-stupidly-long-name-created-in-an-attempt-to-provoke-an-error-found-in-2.0.11-that-should-hopefully-never-appear-again-if-this-test-does-its-job
mkdir -p ${LONGDIR} mkdir -p ${LONGDIR}
date > ${LONGDIR}/1 date > ${LONGDIR}/1
ls -la / > ${LONGDIR}/2 ls -la / > ${LONGDIR}/2
checkit "rsync --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \ runtest "long paths" 'checkit "rsync --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${TO}'
6 "long paths"
if type ssh >/dev/null ; then if type ssh >/dev/null 2>&1; then
rm -rf ${TO} if [ "`ssh -o'BatchMode yes' localhost echo yes 2>/dev/null`" = "yes" ]; then
checkit "rsync -avH -e ssh ${FROM}/ localhost:${TO}" ${FROM}/ ${TO} \ rm -rf ${TO}
7 "ssh: basic test" runtest "ssh: basic test" 'checkit "rsync -avH -e ssh ${FROM}/ localhost:${TO}" ${FROM}/ ${TO}'
mv ${TO}/${F1} ${TO}/ThisShouldGo mv ${TO}/${F1} ${TO}/ThisShouldGo
checkit "rsync --delete -avH -e ssh ${FROM}/ localhost:${TO}" ${FROM}/ ${TO}\ runtest "ssh: renamed file" 'checkit "rsync --delete -avH -e ssh ${FROM}/ localhost:${TO}" ${FROM}/ ${TO}'
8 "ssh: renamed file" else
printmsg "Skipping SSH tests because ssh conection to localhost not authorised"
fi
else else
echo "" printmsg "Skipping SSH tests because ssh is not in the path"
echo "**** Skipping SSH tests because ssh is not in the path ****"
echo ""
fi 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
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
checkforlogs ${LOG}.? checkforlogs ${LOG}.?
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