X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/37c3cf430d996cf0501b083c2c3279a0bc7da95f..99cdaff70da08dffb209ba58cd5cae4b1a4fb736:/testsuite/rsync.fns diff --git a/testsuite/rsync.fns b/testsuite/rsync.fns index 996f9218..8dd91a1b 100644 --- a/testsuite/rsync.fns +++ b/testsuite/rsync.fns @@ -4,6 +4,20 @@ # 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 @@ -20,10 +34,24 @@ printmsg() { 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 @@ -33,7 +61,10 @@ hands_setup() { # 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 + umask 077 + cat $srcdir/*.c | head -2000 > ${FROM}/${F1} mkdir ${FROM}/dir cp ${FROM}/${F1} ${FROM}/dir @@ -45,6 +76,31 @@ hands_setup() { } + + +#################### +# Many machines do not have "mkdir -p", so we have to build up long paths. +# How boring. +makepath () { + p="$1" + ( + # Absolut Unix. + if echo $p | grep '^/' >/dev/null + then + cd / + fi + + # This will break if $1 contains a space. + for c in `echo $p | tr '/' ' '` + do + [ -d "$c" ] || mkdir "$c" || return $? + cd "$c" || return $? + done + ) +} + + + ########################### # Run a test (in '$1') then compare directories $2 and $3 to see if # there are any difference. If there are, explain them. @@ -100,3 +156,30 @@ checkforlogs() { 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 <