Changed the arg-splitting code so that it can handle a literal
[rsync/rsync.git] / testsuite / itemize.test
CommitLineData
5794112a
WD
1#! /bin/sh
2
3# Copyright (C) 2005 by Wayne Davison <wayned@samba.org>
4
5# This program is distributable under the terms of the GNU GPL see
6# COPYING).
7
8# Test the output of various copy commands to ensure itemized output
9# and double-verbose output is correct.
10
11. "$suitedir/rsync.fns"
12
13set -x
14
5794112a
WD
15lddir="$tmpdir/ld"
16
4f3be36e 17chkfile="$scratchdir/rsync.chk"
5794112a
WD
18outfile="$scratchdir/rsync.out"
19
8af1bc90
WD
20# This is only called if rsync was run with -v or -vv (not -i alone).
21# Higher levels of -v would require more filtering.
4f3be36e 22filter_outfile() {
6a12f0d6
WD
23 sed -e '/^building file list /d' \
24 -e '/^created directory /d' \
25 -e '/^done$/d' \
26 -e '/ --whole-file$/d' \
27 -e '/^total: /d' \
4f3be36e
WD
28 -e '/^$/,$d' \
29 <"$outfile" >"$outfile.new"
30 mv "$outfile.new" "$outfile"
31}
32
5794112a
WD
33makepath "$fromdir/foo"
34makepath "$fromdir/bar/baz"
35cp -p "$srcdir/config.h" "$fromdir/foo/config1"
36cp -p "$srcdir/config.h.in" "$fromdir/foo/config2"
37cp -p "$srcdir/rsync.h" "$fromdir/bar/baz/rsync"
e73ad2be 38chmod 600 "$fromdir"/foo/config? "$fromdir/bar/baz/rsync"
87a57a30 39umask 0
5794112a 40ln -s ../bar/baz/rsync "$fromdir/foo/sym"
87a57a30 41umask 022
5794112a
WD
42ln "$fromdir/foo/config1" "$fromdir/foo/extra"
43
44$RSYNC -iplr "$fromdir/" "$todir/" \
45 | tee "$outfile"
4f3be36e 46cat <<EOT >"$chkfile"
5794112a
WD
47cd+++++++ bar/
48cd+++++++ bar/baz/
49>f+++++++ bar/baz/rsync
50cd+++++++ foo/
51>f+++++++ foo/config1
52>f+++++++ foo/config2
53>f+++++++ foo/extra
54cL+++++++ foo/sym -> ../bar/baz/rsync
55EOT
4f3be36e 56diff $diffopt "$chkfile" "$outfile" || test_fail "test 1 failed"
5794112a
WD
57
58# Ensure there are no accidental directory-time problems.
59$RSYNC -a -f '-! */' "$fromdir/" "$todir"
60
61cp -p "$srcdir/config.h" "$fromdir/foo/config2"
e73ad2be 62chmod 601 "$fromdir/foo/config2"
5794112a
WD
63$RSYNC -iplrH "$fromdir/" "$todir/" \
64 | tee "$outfile"
4f3be36e 65cat <<EOT >"$chkfile"
5794112a
WD
66>f..T.... bar/baz/rsync
67>f..T.... foo/config1
e73ad2be 68>f.sTp... foo/config2
5794112a
WD
69hf..T.... foo/extra => foo/config1
70EOT
4f3be36e 71diff $diffopt "$chkfile" "$outfile" || test_fail "test 2 failed"
5794112a
WD
72
73$RSYNC -a -f '-! */' "$fromdir/" "$todir"
74sleep 1 # For directory mod below to ensure time difference
75rm "$todir/foo/sym"
a3dcb790 76umask 0
5794112a 77ln -s ../bar/baz "$todir/foo/sym"
a3dcb790 78umask 022
5794112a 79cp -p "$srcdir/config.h.in" "$fromdir/foo/config2"
e73ad2be 80chmod 600 "$fromdir/foo/config2"
5794112a
WD
81chmod 777 "$todir/bar/baz/rsync"
82
83$RSYNC -iplrtc "$fromdir/" "$todir/" \
84 | tee "$outfile"
4f3be36e 85cat <<EOT >"$chkfile"
5794112a
WD
86.f..tp... bar/baz/rsync
87.d..t.... foo/
88.f..t.... foo/config1
e73ad2be 89>fcstp... foo/config2
5794112a
WD
90cL..T.... foo/sym -> ../bar/baz/rsync
91EOT
4f3be36e 92diff $diffopt "$chkfile" "$outfile" || test_fail "test 3 failed"
5794112a
WD
93
94cp -p "$srcdir/config.h" "$fromdir/foo/config2"
e73ad2be 95chmod 600 "$fromdir/foo/config2"
5794112a
WD
96# Lack of -t is for unchanged hard-link stress-test!
97$RSYNC -vvplrH "$fromdir/" "$todir/" \
5794112a 98 | tee "$outfile"
8af1bc90 99filter_outfile
4f3be36e 100cat <<EOT >"$chkfile"
5794112a
WD
101bar/baz/rsync is uptodate
102foo/config1 is uptodate
103foo/config2
104"foo/extra" is a hard link
105foo/sym is uptodate
106EOT
4f3be36e 107diff $diffopt "$chkfile" "$outfile" || test_fail "test 4 failed"
5794112a
WD
108
109chmod 747 "$todir/bar/baz/rsync"
110$RSYNC -a -f '-! */' "$fromdir/" "$todir"
111$RSYNC -ivvplrtH "$fromdir/" "$todir/" \
5794112a 112 | tee "$outfile"
8af1bc90 113filter_outfile
4f3be36e 114cat <<EOT >"$chkfile"
5794112a
WD
115.d ./
116.d bar/
117.d bar/baz/
118.f...p... bar/baz/rsync
119.d foo/
120.f foo/config1
121>f..t.... foo/config2
122hf foo/extra
123.L foo/sym -> ../bar/baz/rsync
124EOT
4f3be36e 125diff $diffopt "$chkfile" "$outfile" || test_fail "test 5 failed"
5794112a
WD
126
127chmod 757 "$todir/foo/config1"
128touch "$todir/foo/config2"
129$RSYNC -vplrtH "$fromdir/" "$todir/" \
5794112a 130 | tee "$outfile"
8af1bc90 131filter_outfile
4f3be36e 132cat <<EOT >"$chkfile"
5794112a
WD
133foo/config2
134EOT
4f3be36e 135diff $diffopt "$chkfile" "$outfile" || test_fail "test 6 failed"
5794112a
WD
136
137chmod 757 "$todir/foo/config1"
138touch "$todir/foo/config2"
139$RSYNC -iplrtH "$fromdir/" "$todir/" \
140 | tee "$outfile"
4f3be36e 141cat <<EOT >"$chkfile"
5794112a
WD
142.f...p... foo/config1
143>f..t.... foo/config2
144EOT
4f3be36e 145diff $diffopt "$chkfile" "$outfile" || test_fail "test 7 failed"
5794112a
WD
146
147mv "$todir" "$lddir"
148$RSYNC -ivvplrtH --copy-dest="$lddir" "$fromdir/" "$todir/" \
5794112a 149 | tee "$outfile"
8af1bc90 150filter_outfile
4f3be36e 151cat <<EOT >"$chkfile"
5794112a
WD
152.d..t.... ./
153cd+++++++ bar/
154cd+++++++ bar/baz/
155cf....... bar/baz/rsync
156cd+++++++ foo/
157cf....... foo/config1
158cf....... foo/config2
159hf+++++++ foo/extra => foo/config1
160cL+++++++ foo/sym -> ../bar/baz/rsync
161EOT
4f3be36e 162diff $diffopt "$chkfile" "$outfile" || test_fail "test 8 failed"
5794112a
WD
163
164rm -rf "$todir"
165$RSYNC -iplrtH --link-dest="$lddir" "$fromdir/" "$todir/" \
166 | tee "$outfile"
4f3be36e 167cat <<EOT >"$chkfile"
5794112a
WD
168.d..t.... ./
169cd+++++++ bar/
170cd+++++++ bar/baz/
171cd+++++++ foo/
172hf+++++++ foo/extra => foo/config1
173cL+++++++ foo/sym -> ../bar/baz/rsync
174EOT
4f3be36e 175diff $diffopt "$chkfile" "$outfile" || test_fail "test 9 failed"
5794112a
WD
176
177# The script would have aborted on error, so getting here means we've won.
178exit 0