Changed some instances of \" in checkit calls to '.
[rsync/rsync.git] / testsuite / rsync.fns
index a6ddd8c..eaad40a 100644 (file)
 
 
 tmpdir="$scratchdir"
-fromdir=$tmpdir/from
-todir=$tmpdir/to
-chkdir=$tmpdir/chk
+fromdir="$tmpdir/from"
+todir="$tmpdir/to"
+chkdir="$tmpdir/chk"
 
 # Berkley's nice.
 PATH="$PATH:/usr/ucb"
 
-if diff -u $srcdir/testsuite/rsync.fns $srcdir/testsuite/rsync.fns >/dev/null 2>&1; then
+if diff -u "$srcdir/testsuite/rsync.fns" "$srcdir/testsuite/rsync.fns" >/dev/null 2>&1; then
     diffopt="-u"
 else
     diffopt="-c"
 fi
 
+HOME="$scratchdir"
+export HOME
+
 runtest() {
     echo $ECHO_N "Test $1: $ECHO_C"
     if eval "$2"
@@ -44,13 +47,39 @@ runtest() {
     fi
 }
 
+# Call this if you want to filter out verbose messages (-v or -vv) from
+# the output of an rsync run (whittling the output down to just the file
+# messages).  This isn't needed if you use -i without -v.
+filter_outfile() {
+    sed -e '/^building file list /d' \
+       -e '/^sending incremental file list/d' \
+       -e '/^created directory /d' \
+       -e '/^done$/d' \
+       -e '/ --whole-file$/d' \
+       -e '/^total: /d' \
+       -e '/^client charset: /d' \
+       -e '/^server charset: /d' \
+       -e '/^$/,$d' \
+       <"$outfile" >"$outfile.new"
+    mv "$outfile.new" "$outfile"
+}
+
 printmsg() {
     echo "$1"
 }
 
-
 rsync_ls_lR() {
-    find "$@" -print | sort | xargs "$TOOLDIR/tls"
+    find "$@" -print | sort | sed 's/ /\\ /g' | xargs "$TOOLDIR/tls" $TLS_ARGS
+}
+
+check_perms() {
+    perms=`"$TOOLDIR/tls" "$1" | sed 's/^[-d]\(.........\).*/\1/'`
+    if test $perms = $2; then
+       return 0
+    fi
+    echo "permissions: $perms on $1"
+    echo "should be:   $2"
+    test_fail "failed test $3"
 }
 
 rsync_getgroups() { 
@@ -66,9 +95,9 @@ hands_setup() {
     rm -rf "$fromdir"
     rm -rf "$todir"
 
-    [ -d $tmpdir ] || mkdir "$tmpdir"
-    [ -d $fromdir ] || mkdir "$fromdir"
-    [ -d $todir ] || mkdir "$todir"
+    [ -d "$tmpdir" ] || mkdir "$tmpdir"
+    [ -d "$fromdir" ] || mkdir "$fromdir"
+    [ -d "$todir" ] || mkdir "$todir"
 
     # On some BSD systems, the umask affects the mode of created
     # symlinks, even though the mode apparently has no effect on how
@@ -92,15 +121,23 @@ hands_setup() {
     ln -s nolf "$fromdir/nolf-symlink"
     umask 022
 
-    cat $srcdir/*.c > "$fromdir/text"
+    cat "$srcdir"/*.c > "$fromdir/text"
     mkdir "$fromdir/dir"
     cp "$fromdir/text" "$fromdir/dir"
     mkdir "$fromdir/dir/subdir"
     echo some data > "$fromdir/dir/subdir/foobar.baz"
     mkdir "$fromdir/dir/subdir/subsubdir"
-    ls -ltr /etc > "$fromdir/dir/subdir/subsubdir/etc-ltr-list"
+    if [ -r /etc ]; then
+       ls -ltr /etc > "$fromdir/dir/subdir/subsubdir/etc-ltr-list"
+    else
+       ls -ltr / > "$fromdir/dir/subdir/subsubdir/etc-ltr-list"
+    fi
     mkdir "$fromdir/dir/subdir/subsubdir2"
-    ls -lt /bin > "$fromdir/dir/subdir/subsubdir2/bin-lt-list"
+    if [ -r /bin ]; then
+       ls -lt /bin > "$fromdir/dir/subdir/subsubdir2/bin-lt-list"
+    else
+       ls -lt / > "$fromdir/dir/subdir/subsubdir2/bin-lt-list"
+    fi
 
 #      echo testing head:
 #      ls -lR "$srcdir" | head -10 || echo failed
@@ -110,17 +147,17 @@ hands_setup() {
 ####################
 # Many machines do not have "mkdir -p", so we have to build up long paths.
 # How boring.  
-makepath () {
-    echo "        makepath $1"
-    p="$1"
-    (
+makepath() {
+    for p in "${@}"; do
+       (echo "        makepath $p"
+
        # Absolut Unix.
        if echo $p | grep '^/' >/dev/null
        then
            cd /
        fi
     
-       # This will break if $1 contains a space.
+       # This will break if $p contains a space.
        for c in `echo $p | tr '/' ' '`
        do 
            if [ -d "$c" ] || mkdir "$c" 
@@ -129,8 +166,8 @@ makepath () {
            else
                echo "failed to create $c" >&2; return $?
            fi
-       done
-    )
+       done)
+    done
 }
 
 
@@ -157,20 +194,23 @@ checkit() {
        failed="YES";
     fi
 
-    echo "-------------"
-    echo "check how the files compare with diff:"
-    echo ""
-    for f in `cd "$2"; find . -type f -print `
-    do 
-        diff $diffopt "$2"/"$f" "$3"/"$f" || failed=YES
-    done
-
     echo "-------------"
     echo "check how the directory listings compare with diff:"
     echo ""
     ( cd "$2" && rsync_ls_lR . ) > "$tmpdir/ls-from"
     ( cd "$3" && rsync_ls_lR . ) > "$tmpdir/ls-to"
     diff $diffopt "$tmpdir/ls-from" "$tmpdir/ls-to" || failed=YES
+
+    echo "-------------"
+    echo "check how the files compare with diff:"
+    echo ""
+    if [ "x$4" != x ]; then
+       echo "  === Skipping (as directed) ==="
+    else
+       diff -r $diffopt "$2" "$3" || failed=YES
+    fi
+
+    echo "-------------"
     if [ -z "$failed" ] ; then
        return 0
     else
@@ -187,17 +227,19 @@ build_rsyncd_conf() {
     port=2612
     pidfile="$scratchdir/rsyncd.pid"
     logfile="$scratchdir/rsyncd.log"
+    hostname=`uname -n`
 
     cat >"$conf" <<EOF
 # rsyncd configuration file autogenerated by $0
 
 pid file = $pidfile
 use chroot = no
-hosts allow = localhost, 127.0.0.1
+hosts allow = localhost 127.0.0.1 10.0.1.2 $hostname
 log file = $logfile
+log format = %i %h [%a] %m (%u) %l %f%L
+transfer logging = yes
 exclude = foobar.baz
 max verbosity = 9
-
 uid = 0
 gid = 0
 
@@ -208,6 +250,10 @@ gid = 0
 [test-to]
        path = $todir
        read only = no
+
+[test-scratch]
+       path = $scratchdir
+       read only = no
 EOF
 }