# General-purpose test functions for rsync.
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version
+# 2 as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
TMP="$scratchdir"
FROM=${TMP}/from
TO=${TMP}/to
echo "$1"
}
+
+####################
+# Build test directories TO and FROM, with FROM full of files.
+
hands_setup() {
[ -d $FROM ] || mkdir $FROM
[ -d $TO ] || mkdir $TO
+ # On some BSD systems, the umask affects the mode of created
+ # symlinks, even though the mode apparently has no effect on how
+ # the links behave in the future, and it cannot be changed using
+ # chmod! rsync always sets its umask to 000 so that it can
+ # accurately recreate permissions, but this script is probably run
+ # with a different umask.
+
+ # This causes a little problem that "ls -l" of the two will not be
+ # the same. So, we need to set our umask before doing any creations.
+
# set up test data
touch ${FROM}/empty
mkdir ${FROM}/emptydir
# This might fail on systems that don't have -n
echo $ECHO_N "This file has no trailing lf$ECHO_C" > ${FROM}/nolf
+ umask 0
ln -s nolf ${FROM}/nolf-symlink
- cat /etc/inittab /etc/services /etc/resolv.conf > ${FROM}/${F1}
+ umask 077
+
+ cat $srcdir/*.c | head -2000 > ${FROM}/${F1}
mkdir ${FROM}/dir
cp ${FROM}/${F1} ${FROM}/dir
mkdir ${FROM}/dir/subdir
}
+
###########################
# Run a test (in '$1') then compare directories $2 and $3 to see if
# there are any difference. If there are, explain them.
echo "-------------">>${log}
echo "check how the files compare with diff:">>${log}
echo "">>${log}
- diff -ur $2 $3 >>${log} 2>&1 || failed=YES
+ diff -cr $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
+ diff -c ${TMP}/ls-from ${TMP}/ls-to >>${log} 2>&1 || failed=YES
if [ -z "${failed}" ] ; then
echo "${ECHO_T} done."
rm $log
fi
}
+
+build_rsyncd_conf() {
+ # Build an appropriate configuration file
+ conf="$scratchdir/test-rsyncd.conf"
+ echo "building configuration $conf"
+
+ port=2612
+ pidfile="$scratchdir/rsyncd.pid"
+ logfile="$scratchdir/rsyncd.log"
+
+ cat >$conf <<EOF
+# rsyncd configuration file autogenerated by $0
+
+pid file = $pidfile
+use chroot = no
+hosts allow = localhost, 127.0.0.1
+log file = $logfile
+
+[test-from] = $scratchdir/daemon-from/
+ read only = yes
+
+[test-to] = $scratchdir/daemon-to/
+ read only = no
+EOF
+}
+
+