Avoid -u option to id since solaris doesn't support it.
[rsync/rsync.git] / testsuite / devices.test
index b25fa6e..bb73aad 100644 (file)
@@ -14,18 +14,11 @@ outfile="$scratchdir/rsync.out"
 
 # Build some hardlinks
 
-case `id -u` in
-'') ;; # If "id" failed, try to continue...
-0)  ;;
-*)  if [ -f /usr/bin/fakeroot ]; then
-       echo "Let's try re-running the script under fakeroot..."
-       exec /usr/bin/fakeroot /bin/sh $RUNSHFLAGS "$0"
-    fi
-
-    # If we can't test the real device code, try to test --fake-super instead
-    $RSYNC --version | grep ", xattrs" >/dev/null || test_skipped "Rsync needs root/fakeroot/--fake-super for device tests"
+case $0 in
+*fake*)
+    $RSYNC --version | grep ", xattrs" >/dev/null || test_skipped "Rsync needs xattrs for fake device tests"
     RSYNC="$RSYNC --fake-super"
-    export RSYNC_FAKE_SUPER=1
+    TLS_ARGS="$TLS_ARGS --fake-super"
     case "`xattr 2>&1`" in
     *--list:*)
        mknod() {
@@ -57,6 +50,18 @@ case `id -u` in
        ;;
     esac
     ;;
+*)
+    case `get_testuid` in
+    '') ;; # If "id" failed, try to continue...
+    0)  ;;
+    *)  if [ -f /usr/bin/fakeroot ]; then
+           echo "Let's try re-running the script under fakeroot..."
+           exec /usr/bin/fakeroot /bin/sh $RUNSHFLAGS "$0"
+       fi
+       test_skipped "Rsync needs root/fakeroot for device tests"
+       ;;
+    esac
+    ;;
 esac
 
 # TODO: Need to test whether hardlinks are possible on this OS/filesystem
@@ -71,19 +76,20 @@ 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..."
 mkfifo "$fromdir/fifo" || mknod "$fromdir/fifo" p || test_skipped "Can't run mkfifo"
-touch -r "$fromdir/block" "$fromdir/block2"
+# Work around time rounding/truncating issue by touching both files.
+touch -r "$fromdir/block" "$fromdir/block" "$fromdir/block2"
 
 $RSYNC -ai "$fromdir/block" "$todir/block2" \
     | tee "$outfile"
 cat <<EOT >"$chkfile"
-cD+++++++++ block
+cD$all_plus block
 EOT
 diff $diffopt "$chkfile" "$outfile" || test_fail "test 1 failed"
 
 $RSYNC -ai "$fromdir/block2" "$todir/block" \
     | tee "$outfile"
 cat <<EOT >"$chkfile"
-cD+++++++++ block2
+cD$all_plus block2
 EOT
 diff $diffopt "$chkfile" "$outfile" || test_fail "test 2 failed"
 
@@ -92,7 +98,7 @@ sleep 1
 $RSYNC -Di "$fromdir/block3" "$todir/block" \
     | tee "$outfile"
 cat <<EOT >"$chkfile"
-cD..T...... block3
+cDc.T.$dots block3
 EOT
 diff $diffopt "$chkfile" "$outfile" || test_fail "test 3 failed"
 
@@ -100,15 +106,15 @@ $RSYNC -aiHvv "$fromdir/" "$todir/" \
     | tee "$outfile"
 filter_outfile
 cat <<EOT >"$chkfile"
-.d..t...... ./
-cD..t...... block
-cD          block2
-cD+++++++++ block3
-hD+++++++++ block2.5 => block3
-cD+++++++++ char
-cD+++++++++ char2
-cD+++++++++ char3
-cS+++++++++ fifo
+.d..t.$dots ./
+cDc.t.$dots block
+cDc...$dots block2
+cD$all_plus block2.5
+hD$all_plus block3 => block2.5
+cD$all_plus char
+cD$all_plus char2
+cD$all_plus char3
+cS$all_plus fifo
 EOT
 if test ! -r "$fromdir/block2.5"; then
     sed -e '/block2\.5/d' <"$chkfile" >"$chkfile.new"
@@ -127,15 +133,15 @@ if test -b "$fromdir/block2.5"; then
     $RSYNC -aii --link-dest="$todir" "$fromdir/" "$chkdir/" \
        | tee "$outfile"
     cat <<EOT >"$chkfile"
-cd          ./
-hD          block
-hD          block2
-hD          block2.5
-hD          block3
-hD          char
-hD          char2
-hD          char3
-hS          fifo
+cd$allspace ./
+hD$allspace block
+hD$allspace block2
+hD$allspace block2.5
+hD$allspace block3
+hD$allspace char
+hD$allspace char2
+hD$allspace char3
+hS$allspace fifo
 EOT
     diff $diffopt "$chkfile" "$outfile" || test_fail "test 4 failed"
 fi