X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=t%2Fcompare-trees;h=aeaa086a86d1fb92b92bdb902cb34166e42abc44;hb=57aaebfd07e7f35aed2ebd44191669b1d9db49df;hp=cbe332f0c56de8a4de37a867be98da77ba5eb36e;hpb=985b17f45707fe3759ca13f005625934f5f63b4c;p=bup.git diff --git a/t/compare-trees b/t/compare-trees index cbe332f..aeaa086 100755 --- a/t/compare-trees +++ b/t/compare-trees @@ -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|freebsd) + 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