]> arthur.barton.de Git - bup.git/blobdiff - t/compare-trees
vint: remove unnecessary condition
[bup.git] / t / compare-trees
index 5ef44a29edc396358afb71d73f50639c665a0e26..aeaa086a86d1fb92b92bdb902cb34166e42abc44 100755 (executable)
@@ -1,5 +1,7 @@
 #!/usr/bin/env bash
 
+set -u
+
 # Test that src and dest trees are as identical as bup is capable of
 # making them.  For now, use rsync -niaHAX ...
 
@@ -49,7 +51,7 @@ if [[ ! "$rsync_version" =~ "ACLs" ]] || [[ "$rsync_version" =~ "no ACLs" ]]; th
     echo "Not comparing ACLs (not supported by available rsync)" 1>&2
 else
     case $OSTYPE in
-        cygwin|darwin)
+        cygwin|darwin|netbsd)
             echo "Not comparing ACLs (not yet supported on $OSTYPE)" 1>&2
             ;;
         *)
@@ -58,16 +60,28 @@ else
     esac
 fi
 
+xattrs_available=''
 if [[ ! "$rsync_version" =~ "xattrs" ]] || [[ "$rsync_version" =~ "no xattrs" ]]; then
     echo "Not comparing xattrs (not supported by available rsync)" 1>&2
 else
-    rsync_opts="$rsync_opts -X"
+    xattrs_available=yes
 fi
 
-rsync $rsync_opts "$src" "$dest" > "$tmpfile" || exit $?
+# Even in dry-run mode, rsync may fail if -X is specified and the
+# filesystems don't support xattrs.
+
+if test "$xattrs_available"; then
+    rsync $rsync_opts -X "$src" "$dest" > "$tmpfile"
+    if test $? -ne 0; then
+        # Try again without -X
+        rsync $rsync_opts "$src" "$dest" > "$tmpfile" || exit $?
+    fi
+else
+    rsync $rsync_opts "$src" "$dest" > "$tmpfile" || exit $?
+fi
 
 if test $(wc -l < "$tmpfile") != 0; then
-    echo "Differences between $src and $dest"
+    echo "Differences between $src and $dest" 1>&2
     cat "$tmpfile"
     exit 1
 fi