File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / rsync / testsuite / itemize.test
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 00:32:36 2021 UTC (3 years, 3 months ago) by misho
Branches: rsync, MAIN
CVS tags: v3_2_3, HEAD
rsync 3.2.3

    1: #! /bin/sh
    2: 
    3: # Copyright (C) 2005-2020 Wayne Davison
    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.sub" "$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: cp_p "$srcdir/config.sub" "$fromdir/foo/config2"
   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: 
  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
  113: foo/config2
  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
  207: foo/extra => foo/config1
  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>