--- embedaddon/rsync/testsuite/devices.test 2012/02/17 15:09:30 1.1.1.1 +++ embedaddon/rsync/testsuite/devices.test 2013/10/14 07:51:15 1.1.1.2 @@ -19,8 +19,8 @@ case $0 in $RSYNC --version | grep ", xattrs" >/dev/null || test_skipped "Rsync needs xattrs for fake device tests" RSYNC="$RSYNC --fake-super" TLS_ARGS="$TLS_ARGS --fake-super" - case "`xattr 2>&1`" in - *--list:*) + case "$HOST_OS" in + darwin*) mknod() { fn="$1" case "$2" in @@ -34,6 +34,22 @@ case $0 in xattr -s 'rsync.%stat' "$mode $maj,$min 0:0" "$fn" } ;; + solaris*) + mknod() { + fn="$1" + case "$2" in + p) mode=10644 ;; + c) mode=20644 ;; + b) mode=60644 ;; + esac + maj="${3:-0}" + min="${4:-0}" + touch "$fn" + runat "$fn" "$SHELL_PATH" < rsync.%stat +EOF + } + ;; *) mknod() { fn="$1" @@ -54,9 +70,9 @@ case $0 in case `get_testuid` in '') ;; # If "id" failed, try to continue... 0) ;; - *) if [ -f /usr/bin/fakeroot ]; then + *) if [ -e "$FAKEROOT_PATH" ]; then echo "Let's try re-running the script under fakeroot..." - exec /usr/bin/fakeroot /bin/sh $RUNSHFLAGS "$0" + exec "$FAKEROOT_PATH" "$SHELL_PATH" $RUNSHFLAGS "$0" fi test_skipped "Rsync needs root/fakeroot for device tests" ;; @@ -74,7 +90,7 @@ mknod "$fromdir/char3" c 42 69 || test_skipped "Can't mknod "$fromdir/block" b 42 69 || test_skipped "Can't create block device node" mknod "$fromdir/block2" b 42 73 || test_skipped "Can't create block device node" mknod "$fromdir/block3" b 105 73 || test_skipped "Can't create block device node" -ln "$fromdir/block3" "$fromdir/block2.5" || echo "Skipping hard-linked device test..." +ln "$fromdir/block3" "$fromdir/block3.5" || echo "Skipping hard-linked device test..." mkfifo "$fromdir/fifo" || mknod "$fromdir/fifo" p || test_skipped "Can't run mkfifo" # Work around time rounding/truncating issue by touching both files. touch -r "$fromdir/block" "$fromdir/block" "$fromdir/block2" @@ -110,14 +126,14 @@ cat <"$chkfile" cDc.t.$dots block cDc...$dots block2 cD$all_plus block3 -hD$all_plus block2.5 => block3 +hD$all_plus block3.5 => block3 cD$all_plus char cD$all_plus char2 cD$all_plus char3 cS$all_plus fifo EOT -if test ! -r "$fromdir/block2.5"; then - grep -v block2.5 <"$chkfile" >"$chkfile.new" +if test ! -r "$fromdir/block3.5"; then + grep -v block3.5 <"$chkfile" >"$chkfile.new" mv "$chkfile.new" "$chkfile" fi diff $diffopt "$chkfile" "$outfile" || test_fail "test 4 failed" @@ -128,7 +144,7 @@ echo "" ( cd "$todir" && rsync_ls_lR . ) > "$tmpdir/ls-to" diff $diffopt "$tmpdir/ls-from" "$tmpdir/ls-to" -if test -r "$fromdir/block2.5"; then +if test -r "$fromdir/block3.5"; then set -x $RSYNC -aii --link-dest="$todir" "$fromdir/" "$chkdir/" \ | tee "$outfile" @@ -136,8 +152,8 @@ if test -r "$fromdir/block2.5"; then cd$allspace ./ hD$allspace block hD$allspace block2 -hD$allspace block2.5 hD$allspace block3 +hD$allspace block3.5 hD$allspace char hD$allspace char2 hD$allspace char3