X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=t%2Fcompare-trees;h=aeaa086a86d1fb92b92bdb902cb34166e42abc44;hb=57aaebfd07e7f35aed2ebd44191669b1d9db49df;hp=80b056a1cdc8b73009c9cff434867bd4a99056ae;hpb=b574486fc69a8a7c13e50ff0070a30286bfe5f03;p=bup.git diff --git a/t/compare-trees b/t/compare-trees index 80b056a..aeaa086 100755 --- a/t/compare-trees +++ b/t/compare-trees @@ -1,11 +1,10 @@ #!/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 ... -set -e -set -o pipefail - usage() { cat <&2 else - echo "Not comparing xattrs/acls (unsupported by available rsync)." 1>&2 + case $OSTYPE in + cygwin|darwin|netbsd) + echo "Not comparing ACLs (not yet supported on $OSTYPE)" 1>&2 + ;; + *) + rsync_opts="$rsync_opts -A" + ;; + esac fi -rsync $rsync_opts "$src" "$dest" > "${tmpfile}" +xattrs_available='' +if [[ ! "$rsync_version" =~ "xattrs" ]] || [[ "$rsync_version" =~ "no xattrs" ]]; then + echo "Not comparing xattrs (not supported by available rsync)" 1>&2 +else + xattrs_available=yes +fi + +# 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" - cat "${tmpfile}" +if test $(wc -l < "$tmpfile") != 0; then + echo "Differences between $src and $dest" 1>&2 + cat "$tmpfile" exit 1 fi