Fixed an "Internal abbrev error" when dealing with an xattr value
[rsync/rsync.git] / testsuite / daemon.test
1 #!/bin/sh
2
3 # Copyright (C) 2001 by Martin Pool <mbp@samba.org>
4
5 # This program is distributable under the terms of the GNU GPL (see
6 # COPYING)
7
8 # We don't really want to start the server listening, because that
9 # might interfere with the security or operation of the test machine.
10 # Instead we use the fake-connect feature to dynamically assign a pair
11 # of ports.
12
13 # Having started the server we try some basic operations against it:
14
15 # getting a list of module
16 # listing files in a module
17 # retrieving a module
18 # uploading to a module
19 # checking the log file
20 # password authentication
21
22 . "$suitedir/rsync.fns"
23
24 chkfile="$scratchdir/rsync.chk"
25 outfile="$scratchdir/rsync.out"
26
27 SSH="src/support/lsh --no-cd"
28 DIR_REPL='s/^\(d[^ ]*\)  *[0-9][0-9]* /\1         DIR /'
29 LS_REPL='s;[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9];####/##/## ##:##:##;'
30
31 build_rsyncd_conf
32
33 makepath "$fromdir/foo" "$fromdir/bar/baz"
34 makepath "$todir"
35 echo one >"$fromdir/foo/one"
36 echo two >"$fromdir/bar/two"
37 echo three >"$fromdir/bar/baz/three"
38
39 cd "$scratchdir"
40
41 ln -s test-rsyncd.conf rsyncd.conf
42
43 confopt=''
44 case `id -u` in
45 0)
46     # Root needs to specify the config file, or it uses /etc/rsyncd.conf.
47     echo "Forcing --config=$conf"
48     confopt=" --config=$conf"
49     ;;
50 esac
51
52 $RSYNC -ve "$SSH" --rsync-path="$RSYNC$confopt" localhost::
53
54 RSYNC_CONNECT_PROG="$RSYNC --config=$conf --daemon"
55 export RSYNC_CONNECT_PROG
56
57 $RSYNC -v localhost:: \
58     | tee "$outfile"
59 # These have a space-padded 15-char name, then a tab, then a comment.
60 sed 's/NOCOMMENT//' <<EOT >"$chkfile"
61 test-from       r/o
62 test-to         r/w
63 test-scratch    NOCOMMENT
64 EOT
65 diff $diffopt "$chkfile" "$outfile" || test_fail "test 1 failed"
66
67 $RSYNC -r localhost::test-hidden \
68     | sed "$DIR_REPL" | sed "$LS_REPL" \
69     | tee "$outfile"
70 cat <<EOT >"$chkfile"
71 drwxr-xr-x         DIR ####/##/## ##:##:## .
72 drwxr-xr-x         DIR ####/##/## ##:##:## bar
73 -rw-r--r--           4 ####/##/## ##:##:## bar/two
74 drwxr-xr-x         DIR ####/##/## ##:##:## bar/baz
75 -rw-r--r--           6 ####/##/## ##:##:## bar/baz/three
76 drwxr-xr-x         DIR ####/##/## ##:##:## foo
77 -rw-r--r--           4 ####/##/## ##:##:## foo/one
78 EOT
79 diff $diffopt "$chkfile" "$outfile" || test_fail "test 2 failed"
80
81 $RSYNC -r localhost::test-from/f* \
82     | sed "$DIR_REPL" | sed "$LS_REPL" \
83     | tee "$outfile"
84 cat <<EOT >"$chkfile"
85 drwxr-xr-x         DIR ####/##/## ##:##:## foo
86 -rw-r--r--           4 ####/##/## ##:##:## foo/one
87 EOT
88 diff $diffopt "$chkfile" "$outfile" || test_fail "test 3 failed"
89