Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
"make distclean": We try to delete built files from both the source
[rsync/rsync.git]
/
test.sh
diff --git
a/test.sh
b/test.sh
index
51f73df
..
f74471c
100755
(executable)
--- a/
test.sh
+++ b/
test.sh
@@
-1,7
+1,6
@@
#!/bin/sh
#!/bin/sh
-#
-# Copyright (C) 1998 Philip Hands <http://www.hands.com/~phil/>
+# Copyright (C) 1998,1999 Philip Hands <phil@hands.com>
#
# 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,7
+9,15
@@
#
#
#
#
-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
not for end users. You may experience failures on some platforms that
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
@@
-18,7
+25,19
@@
do not indicate a problem with rsync.
EOF
EOF
-export PATH=.:$PATH
+RSYNC=`pwd`/rsync
+
+ runtest() {
+ echo -n "Test $1: "
+ eval "$2"
+ }
+ printmsg() {
+ echo ""
+ echo "**** ${1}^G ****"
+ echo ""
+ }
+fi
+
TMP=/tmp/rsync-test.$$
FROM=${TMP}/from
TO=${TMP}/to
TMP=/tmp/rsync-test.$$
FROM=${TMP}/from
TO=${TMP}/to
@@
-35,37
+54,60
@@
mkdir ${FROM}/emptydir
ps ax > ${FROM}/pslist
echo -n "This file has no trailing lf" > ${FROM}/nolf
ln -s nolf ${FROM}/nolf-symlink
ps ax > ${FROM}/pslist
echo -n "This file has no trailing lf" > ${FROM}/nolf
ln -s nolf ${FROM}/nolf-symlink
-cat /etc/inittab /etc/services /etc/resolv.conf > ${FROM}/${F1}
+
+# Gather some random text. We need files that will exist and be
+# publicly readable on all platforms: hopefully this will work.
+cat /etc/*tab /etc/services /etc/*.conf /etc/*rc > ${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:"
- log=${LOG}.$
4
+ testnum=`expr 0${testnum} + 1`
+ log=${LOG}.$
{testnum}
failed=
echo "Running: \"$1\"" >${log}
echo "">>${log}
failed=
echo "Running: \"$1\"" >${log}
echo "">>${log}
- eval "$1 || failed=YES" >>${log} 2>&1
-
+ 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}
echo "-------------">>${log}
echo "check how the files compare with diff:">>${log}
echo "">>${log}
- diff -ur $2 $3 >>${log} || failed=YES
+ diff -ur $2 $3 >>${log}
2>&1
|| failed=YES
echo "-------------">>${log}
echo "check how the directory listings compare with diff:">>${log}
echo "">>${log}
echo "-------------">>${log}
echo "check how the directory listings compare with diff:">>${log}
echo "">>${log}
- ls -la $2 > ${TMP}/ls-from
- ls -la $3 > ${TMP}/ls-to
- diff -u ${TMP}/ls-from ${TMP}/ls-to >>${log} || failed=YES
+ ( 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
if [ -z "${failed}" ] ; then
-
echo "
done."
+
test -z "${Debian}" && echo "
done."
rm $log
rm $log
+ return 0
else
else
- echo " FAILED.
\a
"
+ if test -n "${Debian}" ; then
+ cat ${log}
+ rm ${log}
+ else
+ echo " FAILED (test # ${testnum} status=$status).
\a
"
+ 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
cat <<EOF
if [ -f $1 ] ; then
cat <<EOF
@@
-87,44
+129,45
@@
EOF
# Main script starts here
# Main script starts here
-checkit "rsync -av ${FROM}/ ${TO}" ${FROM}/ ${TO} \
- 1 "basic operation"
+runtest "basic operation" 'checkit "$RSYNC -av ${FROM}/ ${TO}" ${FROM}/ ${TO}'
ln ${FROM}/pslist ${FROM}/dir
ln ${FROM}/pslist ${FROM}/dir
-checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \
- 2 "hard links"
+runtest "hard links" 'checkit "$RSYNC -avH ${FROM}/ ${TO}" ${FROM}/ ${TO}'
rm ${TO}/${F1}
rm ${TO}/${F1}
-checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \
- 3 "one file"
+runtest "one file" 'checkit "$RSYNC -avH ${FROM}/ ${TO}" ${FROM}/ ${TO}'
echo "extra line" >> ${TO}/${F1}
echo "extra line" >> ${TO}/${F1}
-checkit "rsync -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \
- 4 "extra data"
+runtest "extra data" 'checkit "$RSYNC -avH ${FROM}/ ${TO}" ${FROM}/ ${TO}'
cp ${FROM}/${F1} ${TO}/ThisShouldGo
cp ${FROM}/${F1} ${TO}/ThisShouldGo
-checkit "rsync --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \
- 5 " --delete"
+runtest " --delete" 'checkit "$RSYNC --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${TO}'
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}
date > ${LONGDIR}/1
ls -la / > ${LONGDIR}/2
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}
date > ${LONGDIR}/1
ls -la / > ${LONGDIR}/2
-checkit "rsync --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${TO} \
- 6 "long paths"
+runtest "long paths" 'checkit "$RSYNC --delete -avH ${FROM}/ ${TO}" ${FROM}/ ${TO}'
-if type ssh >/dev/null ; then
-rm -rf ${TO}
- checkit "rsync -avH -e ssh ${FROM}/ localhost:${TO}" ${FROM}/ ${TO} \
- 7 "ssh: basic test"
+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
- checkit "rsync --delete -avH -e ssh ${FROM}/ localhost:${TO}" ${FROM}/ ${TO}\
- 8 "ssh: renamed file"
+ 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
else
- echo ""
- echo "**** Skipping SSH tests because ssh is not in the path
\a
****"
- echo ""
+ printmsg "Skipping SSH tests because ssh is not in the path"
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}.?