Annotation of embedaddon/rsync/testsuite/itemize.test, revision 1.1.1.3
1.1 misho 1: #! /bin/sh
2:
1.1.1.3 ! misho 3: # Copyright (C) 2005-2020 Wayne Davison
1.1 misho 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:
13: to2dir="$tmpdir/to2"
14:
15: chkfile="$scratchdir/rsync.chk"
16: outfile="$scratchdir/rsync.out"
17:
18: makepath "$fromdir/foo"
19: makepath "$fromdir/bar/baz"
1.1.1.3 ! misho 20: cp_p "$srcdir/configure.ac" "$fromdir/foo/config1"
! 21: cp_p "$srcdir/config.sub" "$fromdir/foo/config2"
! 22: cp_p "$srcdir/rsync.h" "$fromdir/bar/baz/rsync"
1.1 misho 23: chmod 600 "$fromdir"/foo/config? "$fromdir/bar/baz/rsync"
24: umask 0
25: ln -s ../bar/baz/rsync "$fromdir/foo/sym"
26: umask 022
27: ln "$fromdir/foo/config1" "$fromdir/foo/extra"
28: rm -f "$to2dir"
29:
30: # Check if rsync is set to hard-link symlinks.
31: if egrep '^#define CAN_HARDLINK_SYMLINK 1' config.h >/dev/null; then
32: L=hL
33: else
34: L=cL
35: fi
36:
37: # Check if rsync can preserve time on symlinks
38: case "$RSYNC" in
39: *protocol=2*)
40: T=.T
41: ;;
42: *)
1.1.1.3 ! misho 43: if $RSYNC --version | grep "[, ] symtimes" >/dev/null; then
1.1 misho 44: T=.t
45: else
46: T=.T
47: fi
48: ;;
49: esac
50:
51: $RSYNC -iplr "$fromdir/" "$todir/" \
52: | tee "$outfile"
53: cat <<EOT >"$chkfile"
54: cd$all_plus ./
55: cd$all_plus bar/
56: cd$all_plus bar/baz/
57: >f$all_plus bar/baz/rsync
58: cd$all_plus foo/
59: >f$all_plus foo/config1
60: >f$all_plus foo/config2
61: >f$all_plus foo/extra
62: cL$all_plus foo/sym -> ../bar/baz/rsync
63: EOT
64: diff $diffopt "$chkfile" "$outfile" || test_fail "test 1 failed"
65:
66: # Ensure there are no accidental directory-time problems.
67: $RSYNC -a -f '-! */' "$fromdir/" "$todir"
68:
1.1.1.3 ! misho 69: cp_p "$srcdir/configure.ac" "$fromdir/foo/config2"
1.1 misho 70: chmod 601 "$fromdir/foo/config2"
71: $RSYNC -iplrH "$fromdir/" "$todir/" \
72: | tee "$outfile"
73: cat <<EOT >"$chkfile"
74: >f..T.$dots bar/baz/rsync
75: >f..T.$dots foo/config1
76: >f.sTp$dots foo/config2
77: hf..T.$dots foo/extra => foo/config1
78: EOT
79: diff $diffopt "$chkfile" "$outfile" || test_fail "test 2 failed"
80:
81: $RSYNC -a -f '-! */' "$fromdir/" "$todir"
1.1.1.3 ! misho 82: cp_p "$srcdir/config.sub" "$fromdir/foo/config2"
1.1 misho 83: sleep 1 # For directory mod below to ensure time difference
84: rm "$todir/foo/sym"
85: umask 0
86: ln -s ../bar/baz "$todir/foo/sym"
87: umask 022
88: chmod 600 "$fromdir/foo/config2"
89: chmod 777 "$todir/bar/baz/rsync"
90:
91: $RSYNC -iplrtc "$fromdir/" "$todir/" \
92: | tee "$outfile"
93: cat <<EOT >"$chkfile"
94: .f..tp$dots bar/baz/rsync
95: .d..t.$dots foo/
96: .f..t.$dots foo/config1
97: >fcstp$dots foo/config2
98: cLc$T.$dots foo/sym -> ../bar/baz/rsync
99: EOT
100: diff $diffopt "$chkfile" "$outfile" || test_fail "test 3 failed"
101:
1.1.1.3 ! misho 102: cp_p "$srcdir/configure.ac" "$fromdir/foo/config2"
1.1 misho 103: chmod 600 "$fromdir/foo/config2"
104: # Lack of -t is for unchanged hard-link stress-test!
105: $RSYNC -vvplrH "$fromdir/" "$todir/" \
106: | tee "$outfile"
107: filter_outfile
108: cat <<EOT >"$chkfile"
109: bar/baz/rsync is uptodate
110: foo/config1 is uptodate
111: foo/extra is uptodate
112: foo/sym is uptodate
1.1.1.2 misho 113: foo/config2
1.1 misho 114: EOT
115: diff $diffopt "$chkfile" "$outfile" || test_fail "test 4 failed"
116:
117: chmod 747 "$todir/bar/baz/rsync"
118: $RSYNC -a -f '-! */' "$fromdir/" "$todir"
119: $RSYNC -ivvplrtH "$fromdir/" "$todir/" \
120: | tee "$outfile"
121: filter_outfile
122: cat <<EOT >"$chkfile"
123: .d$allspace ./
124: .d$allspace bar/
125: .d$allspace bar/baz/
126: .f...p$dots bar/baz/rsync
127: .d$allspace foo/
128: .f$allspace foo/config1
129: >f..t.$dots foo/config2
130: hf$allspace foo/extra
131: .L$allspace foo/sym -> ../bar/baz/rsync
132: EOT
133: diff $diffopt "$chkfile" "$outfile" || test_fail "test 5 failed"
134:
135: chmod 757 "$todir/foo/config1"
136: touch "$todir/foo/config2"
137: $RSYNC -vplrtH "$fromdir/" "$todir/" \
138: | tee "$outfile"
139: filter_outfile
140: cat <<EOT >"$chkfile"
141: foo/config2
142: EOT
143: diff $diffopt "$chkfile" "$outfile" || test_fail "test 6 failed"
144:
145: chmod 757 "$todir/foo/config1"
146: touch "$todir/foo/config2"
147: $RSYNC -iplrtH "$fromdir/" "$todir/" \
148: | tee "$outfile"
149: cat <<EOT >"$chkfile"
150: .f...p$dots foo/config1
151: >f..t.$dots foo/config2
152: EOT
153: diff $diffopt "$chkfile" "$outfile" || test_fail "test 7 failed"
154:
155: $RSYNC -ivvplrtH --copy-dest=../to "$fromdir/" "$to2dir/" \
156: | tee "$outfile"
157: filter_outfile
158: case `tail -1 "$outfile"` in
159: cLc.t*)
160: sym_dots="c.t.$dots"
161: L_sym_dots="cL$sym_dots"
162: is_uptodate='-> ../bar/baz/rsync'
163: echo "cL$sym_dots foo/sym $is_uptodate" >"$chkfile.extra"
164: L=cL
165: ;;
166: *)
167: sym_dots="$allspace"
168: L_sym_dots=".L$allspace"
169: is_uptodate='is uptodate'
170: touch "$chkfile.extra"
171: ;;
172: esac
173: cat <<EOT >"$chkfile"
174: cd$allspace ./
175: cd$allspace bar/
176: cd$allspace bar/baz/
177: cf$allspace bar/baz/rsync
178: cd$allspace foo/
179: cf$allspace foo/config1
180: cf$allspace foo/config2
181: hf$allspace foo/extra => foo/config1
182: cL$sym_dots foo/sym -> ../bar/baz/rsync
183: EOT
184: diff $diffopt "$chkfile" "$outfile" || test_fail "test 8 failed"
185:
186: rm -rf "$to2dir"
187: $RSYNC -iplrtH --copy-dest=../to "$fromdir/" "$to2dir/" \
188: | tee "$outfile"
189: cat - "$chkfile.extra" <<EOT >"$chkfile"
190: hf$allspace foo/extra => foo/config1
191: EOT
192: diff $diffopt "$chkfile" "$outfile" || test_fail "test 9 failed"
193:
194: rm -rf "$to2dir"
195: $RSYNC -vvplrtH --copy-dest="$todir" "$fromdir/" "$to2dir/" \
196: | tee "$outfile"
197: filter_outfile
198: cat <<EOT >"$chkfile"
199: ./ is uptodate
200: bar/ is uptodate
201: bar/baz/ is uptodate
202: bar/baz/rsync is uptodate
203: foo/ is uptodate
204: foo/config1 is uptodate
205: foo/config2 is uptodate
206: foo/sym $is_uptodate
1.1.1.2 misho 207: foo/extra => foo/config1
1.1 misho 208: EOT
209: diff $diffopt "$chkfile" "$outfile" || test_fail "test 10 failed"
210:
211: rm -rf "$to2dir"
212: $RSYNC -ivvplrtH --link-dest="$todir" "$fromdir/" "$to2dir/" \
213: | tee "$outfile"
214: filter_outfile
215: cat <<EOT >"$chkfile"
216: cd$allspace ./
217: cd$allspace bar/
218: cd$allspace bar/baz/
219: hf$allspace bar/baz/rsync
220: cd$allspace foo/
221: hf$allspace foo/config1
222: hf$allspace foo/config2
223: hf$allspace foo/extra => foo/config1
224: $L$sym_dots foo/sym -> ../bar/baz/rsync
225: EOT
226: diff $diffopt "$chkfile" "$outfile" || test_fail "test 11 failed"
227:
228: rm -rf "$to2dir"
229: $RSYNC -iplrtH --dry-run --link-dest=../to "$fromdir/" "$to2dir/" \
230: | tee "$outfile"
231: cat - "$chkfile.extra" <<EOT >"$chkfile"
232: EOT
233: diff $diffopt "$chkfile" "$outfile" || test_fail "test 12 failed"
234:
235: rm -rf "$to2dir"
236: $RSYNC -iplrtH --link-dest=../to "$fromdir/" "$to2dir/" \
237: | tee "$outfile"
238: cat - "$chkfile.extra" <<EOT >"$chkfile"
239: EOT
240: diff $diffopt "$chkfile" "$outfile" || test_fail "test 13 failed"
241:
242: rm -rf "$to2dir"
243: $RSYNC -vvplrtH --link-dest="$todir" "$fromdir/" "$to2dir/" \
244: | tee "$outfile"
245: filter_outfile
246: cat <<EOT >"$chkfile"
247: ./ is uptodate
248: bar/ is uptodate
249: bar/baz/ is uptodate
250: bar/baz/rsync is uptodate
251: foo/ is uptodate
252: foo/config1 is uptodate
253: foo/config2 is uptodate
254: foo/extra is uptodate
255: foo/sym $is_uptodate
256: EOT
257: diff $diffopt "$chkfile" "$outfile" || test_fail "test 14 failed"
258:
259: rm -rf "$to2dir"
260: $RSYNC -ivvplrtH --compare-dest="$todir" "$fromdir/" "$to2dir/" \
261: | tee "$outfile"
262: filter_outfile
263: cat <<EOT >"$chkfile"
264: cd$allspace ./
265: cd$allspace bar/
266: cd$allspace bar/baz/
267: .f$allspace bar/baz/rsync
268: cd$allspace foo/
269: .f$allspace foo/config1
270: .f$allspace foo/config2
271: .f$allspace foo/extra
272: $L_sym_dots foo/sym -> ../bar/baz/rsync
273: EOT
274: diff $diffopt "$chkfile" "$outfile" || test_fail "test 15 failed"
275:
276: rm -rf "$to2dir"
277: $RSYNC -iplrtH --compare-dest="$todir" "$fromdir/" "$to2dir/" \
278: | tee "$outfile"
279: cat - "$chkfile.extra" <<EOT >"$chkfile"
280: EOT
281: diff $diffopt "$chkfile" "$outfile" || test_fail "test 16 failed"
282:
283: rm -rf "$to2dir"
284: $RSYNC -vvplrtH --compare-dest="$todir" "$fromdir/" "$to2dir/" \
285: | tee "$outfile"
286: filter_outfile
287: cat <<EOT >"$chkfile"
288: ./ is uptodate
289: bar/ is uptodate
290: bar/baz/ is uptodate
291: bar/baz/rsync is uptodate
292: foo/ is uptodate
293: foo/config1 is uptodate
294: foo/config2 is uptodate
295: foo/extra is uptodate
296: foo/sym $is_uptodate
297: EOT
298: diff $diffopt "$chkfile" "$outfile" || test_fail "test 17 failed"
299:
300: # The script would have aborted on error, so getting here means we've won.
301: exit 0
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>