TO=${TMP}/to
F1=text1
LOG=${TMP}/log
+RSYNC="$rsync_bin"
runtest() {
echo $ECHO_N "Test $1: $ECHO_C"
# set up test data
touch ${FROM}/empty
mkdir ${FROM}/emptydir
- ps ax > ${FROM}/pslist
+
+ # a few hundred lines of test
+ ls -lR / | head -200 > ${FROM}/filelist
# This might fail on systems that don't have -n
echo $ECHO_N "This file has no trailing lf$ECHO_C" > ${FROM}/nolf
ln -s nolf ${FROM}/nolf-symlink
- cat /etc/inittab /etc/services /etc/resolv.conf > ${FROM}/${F1}
+ cat $srcdir/*.c | head -2000 > ${FROM}/${F1}
mkdir ${FROM}/dir
cp ${FROM}/${F1} ${FROM}/dir
mkdir ${FROM}/dir/subdir
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 -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 -c ${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
+}
+
+
+# In fact, we need a more general feature of capturing all stderr/log files,
+# and dumping them if something goes wrong.
+
+checkforlogs() {
+ # skip it if we're under debian-test
+ if test -n "${Debian}" ; then return 0 ; fi
+
+ if [ -f $1 -a -s $1 ] ; then
+ echo "Failures have occurred. $1 follows:" >&2
+ cat $1 >&2
+ exit 1
+ fi
+}
+
+
+function 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
+}
+
+
+
+function start_rsyncd {
+ echo starting daemon
+ $rsync_bin --daemon --port $port --config $conf
+ sleep 2
+ pid=`cat "$pidfile"`
+ echo rsyncd running as process $pid
+
+
+ # We need to make sure that we always kill rsync, even if there's an
+ # error. Otherwise it might hang around, and be insecure or at any
+ # rate keep the port bound and prevent the tests running in the
+ # future.
+
+ trap "echo killing off process $pid; kill $pid" EXIT
+}