X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/16edf86595a5a990a942fa045dfb523dae1fe6cb..d724dd186ed6a2d66fa13a9357ce91e459d39e8c:/testsuite/xattrs.test diff --git a/testsuite/xattrs.test b/testsuite/xattrs.test index d8d60d4d..66c3e752 100644 --- a/testsuite/xattrs.test +++ b/testsuite/xattrs.test @@ -9,10 +9,6 @@ $RSYNC --version | grep ", xattrs" >/dev/null || test_skipped "Rsync is configured without xattr support" -case "$RSYNC" in -*protocol=29*) test_skipped "xattr support requires protocol 30" ;; -esac - case "`xattr 2>&1`" in *--list:*) xset() { @@ -24,6 +20,7 @@ case "`xattr 2>&1`" in xls() { xattr -l "${@}" } + RUSR='rsync' ;; *) xset() { @@ -35,21 +32,23 @@ case "`xattr 2>&1`" in xls() { getfattr -d "${@}" } + RUSR='user.rsync' ;; esac -makepath "$fromdir/foo" +makepath "$fromdir/foo/bar" echo now >"$fromdir/file0" echo something >"$fromdir/file1" echo else >"$fromdir/file2" echo deep >"$fromdir/foo/file3" echo normal >"$fromdir/file4" +echo deeper >"$fromdir/foo/bar/file5" makepath "$chkdir/foo" echo wow >"$chkdir/file1" cp -p "$fromdir/foo/file3" "$chkdir/foo" -files='foo file0 file1 file2 foo/file3 file4' +files='foo file0 file1 file2 foo/file3 file4 foo/bar/file5' cd "$fromdir" @@ -65,21 +64,23 @@ xset user.foo foo file2 xset user.bar bar file2 xset user.long 'a long attribute for our new file that tests to ensure that this works' file2 -xset user.foo 'new foo' foo/file3 -xset user.bar 'new bar' foo/file3 -xset user.long 'this is also a long attribute that will be truncated in the initial data send' foo/file3 -xset user.equal 'this long attribute should remain the same and not need to be transferred' foo/file3 +xset user.foo 'new foo' foo/file3 foo/bar/file5 +xset user.bar 'new bar' foo/file3 foo/bar/file5 +xset user.long 'this is also a long attribute that will be truncated in the initial data send' foo/file3 foo/bar/file5 +xset $RUSR.equal 'this long attribute should remain the same and not need to be transferred' foo/file3 foo/bar/file5 +xset $RUSR.equal 'this short' foo/file3 foo/bar/file5 xset user.short 'old short' "$chkdir/file1" xset user.extra 'remove me' "$chkdir/file1" xset user.foo 'old foo' "$chkdir/foo/file3" -xset user.equal 'this long attribute should remain the same and not need to be transferred' "$chkdir/foo/file3" +xset $RUSR.equal 'this long attribute should remain the same and not need to be transferred' "$chkdir/foo/file3" +xset $RUSR.equal 'this short' "$chkdir/foo/file3" xls $files >"$scratchdir/xattrs.txt" # OK, let's try a simple xattr copy. -checkit "$RSYNC -avX . \"$chkdir/\"" "$fromdir" "$chkdir" +checkit "$RSYNC -avX . '$chkdir/'" "$fromdir" "$chkdir" cd "$chkdir" xls $files | diff $diffopt "$scratchdir/xattrs.txt" - @@ -98,10 +99,17 @@ xls $files >"$scratchdir/xattrs.txt" rm -rf "$todir" -checkit "$RSYNC -aiX --link-dest=../chk . ../to" "$chkdir" "$todir" +checkit "$RSYNC -aiX --fake-super --link-dest=../chk . ../to" "$chkdir" "$todir" cd "$todir" xls $files | diff $diffopt "$scratchdir/xattrs.txt" - +sed -n -e '/\.\/file1$/d' -e '/^[^ ]* *[^ ]* *[^ ]* *1 /p' "$scratchdir/ls-to" >"$scratchdir/ls-diff" +if [ -s "$scratchdir/ls-diff" ]; then + echo "Missing hard links on:" + cat "$scratchdir/ls-diff" + exit 1 +fi + # The script would have aborted on error, so getting here means we've won. exit 0