Annotation of embedaddon/rsync/testsuite/itemize.test, revision 1.1.1.2

1.1       misho       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: 
                     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"
                     20: cp -p "$srcdir/configure.ac" "$fromdir/foo/config1"
                     21: cp -p "$srcdir/config.h.in" "$fromdir/foo/config2"
                     22: cp -p "$srcdir/rsync.h" "$fromdir/bar/baz/rsync"
                     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: *)
                     43:     if $RSYNC --version | grep ", symtimes" >/dev/null; then
                     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: 
                     69: cp -p "$srcdir/configure.ac" "$fromdir/foo/config2"
                     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"
                     82: sleep 1 # For directory mod below to ensure time difference
                     83: rm "$todir/foo/sym"
                     84: umask 0
                     85: ln -s ../bar/baz "$todir/foo/sym"
                     86: umask 022
                     87: cp -p "$srcdir/config.h.in" "$fromdir/foo/config2"
                     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: 
                    102: cp -p "$srcdir/configure.ac" "$fromdir/foo/config2"
                    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>