123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384 |
- #! /bin/sh
- tmpdir="$scratchdir"
- fromdir="$tmpdir/from"
- todir="$tmpdir/to"
- chkdir="$tmpdir/chk"
- all_plus='+++++++++'
- allspace=' '
- dots='.....'
- PATH="$PATH:/usr/ucb"
- 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"
- then
- echo "$ECHO_T done."
- return 0
- else
- echo "$ECHO_T failed!"
- return 1
- fi
- }
- set_cp_destdir() {
- while test $# -gt 1; do
- shift
- done
- destdir="$1"
- }
- cp_touch() {
- cp -p "${@}" || test_fail "cp -p failed"
- if test $# -gt 2 -o -d "$2"; then
- set_cp_destdir "${@}"
- while test $# -gt 1; do
- destname="$destdir/`basename $1`"
- touch -r "$destname" "$1" "$destname"
- shift
- done
- else
- touch -r "$2" "$1" "$2"
- fi
- }
- 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 | 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() {
- "$TOOLDIR/getgroups"
- }
- hands_setup() {
-
- rm -rf "$fromdir"
- rm -rf "$todir"
- [ -d "$tmpdir" ] || mkdir "$tmpdir"
- [ -d "$fromdir" ] || mkdir "$fromdir"
- [ -d "$todir" ] || mkdir "$todir"
-
-
-
-
-
-
-
-
-
- touch "$fromdir/empty"
- mkdir "$fromdir/emptydir"
-
- rsync_ls_lR "$srcdir" > "$fromdir/filelist"
- echo $ECHO_N "This file has no trailing lf$ECHO_C" > "$fromdir/nolf"
- umask 0
- ln -s nolf "$fromdir/nolf-symlink"
- umask 022
- 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"
- 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"
- 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
- }
- makepath() {
- for p in "${@}"; do
- (echo " makepath $p"
-
- if echo $p | grep '^/' >/dev/null
- then
- cd /
- fi
-
-
- for c in `echo $p | tr '/' ' '`
- do
- if [ -d "$c" ] || mkdir "$c"
- then
- cd "$c" || return $?
- else
- echo "failed to create $c" >&2; return $?
- fi
- done)
- done
- }
- checkit() {
- failed=
-
-
- echo "Running: \"$1\""
- eval "$1"
- status=$?
- if [ $status != 0 ]; then
- failed="YES";
- fi
- 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
- return 1
- fi
- }
- build_rsyncd_conf() {
-
- conf="$scratchdir/test-rsyncd.conf"
- echo "building configuration $conf"
- port=2612
- pidfile="$scratchdir/rsyncd.pid"
- logfile="$scratchdir/rsyncd.log"
- hostname=`uname -n`
- cat >"$conf" <<EOF
- pid file = $pidfile
- use chroot = no
- munge symlinks = no
- hosts allow = localhost 127.0.0.0/24 192.168.0.0/16 10.0.0.0/8 $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
- [test-from]
- path = $fromdir
- read only = yes
- comment = r/o
- [test-to]
- path = $todir
- read only = no
- comment = r/w
- [test-scratch]
- path = $scratchdir
- read only = no
- [test-hidden]
- path = $fromdir
- list = no
- EOF
-
- ignore23="$scratchdir/ignore23"
- echo "building help script $ignore23"
- cat >"$ignore23" <<'EOT'
- if "${@}"; then
- exit
- fi
- ret=$?
- if test $ret = 23; then
- exit
- fi
- exit $ret
- EOT
- chmod +x "$ignore23"
- }
- build_symlinks() {
- mkdir "$fromdir"
- date >"$fromdir/referent"
- ln -s referent "$fromdir/relative"
- ln -s "$fromdir/referent" "$fromdir/absolute"
- ln -s nonexistent "$fromdir/dangling"
- ln -s "$srcdir/rsync.c" "$fromdir/unsafe"
- }
- test_fail() {
- echo "$@" >&2
- exit 1
- }
- test_skipped() {
- echo "$@" >&2
- echo "$@" > "$tmpdir/whyskipped"
- exit 77
- }
- test_xfail() {
- echo "$@" >&2
- exit 78
- }
- ln -s foo "$scratchdir/testlink"
- for cmd in test /bin/test /usr/bin/test /usr/ucb/bin/test /usr/ucb/test
- do
- for switch in -h -L
- do
- if $cmd $switch "$scratchdir/testlink" 2>/dev/null
- then
-
- TEST_SYMLINK_CMD="$cmd $switch"
-
- break 2
- fi
- done
- done
- rm "$scratchdir/testlink"
- if [ "x$TEST_SYMLINK_CMD" = 'x' ]
- then
- test_fail "Couldn't determine how to test for symlinks"
- else
- echo "Testing for symlinks using '$TEST_SYMLINK_CMD'"
- fi
-
- is_a_link() {
-
- $TEST_SYMLINK_CMD "$1"
- }
-
- umask 022
|