aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2011-01-01 17:30:26 -0800
committerWayne Davison <wayned@samba.org>2011-01-01 18:09:57 -0800
commitd3f5c628d7bdec6f7334bbae68a7bee1f5285815 (patch)
tree76409973039d2c613de943c81ea090d65a8de130 /testsuite
parent8b6ebde1f328c37fededb0acad85c0b0b5b835e5 (diff)
downloadandroid_external_rsync-d3f5c628d7bdec6f7334bbae68a7bee1f5285815.tar.gz
android_external_rsync-d3f5c628d7bdec6f7334bbae68a7bee1f5285815.tar.bz2
android_external_rsync-d3f5c628d7bdec6f7334bbae68a7bee1f5285815.zip
Avoid directory permission issues with --fake-super.
Fixes bug 7070.
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/xattrs.test28
1 files changed, 26 insertions, 2 deletions
diff --git a/testsuite/xattrs.test b/testsuite/xattrs.test
index 76b90993..74f17db2 100644
--- a/testsuite/xattrs.test
+++ b/testsuite/xattrs.test
@@ -48,7 +48,8 @@ makepath "$chkdir/foo"
echo wow >"$chkdir/file1"
cp_touch "$fromdir/foo/file3" "$chkdir/foo"
-files='foo file0 file1 file2 foo/file3 file4 foo/bar/file5'
+files='foo file0 file1 file2 foo/file3 file4 foo/bar foo/bar/file5'
+uid_gid=`"$TOOLDIR/tls" "$fromdir/foo" | sed 's/^.* \([0-9][0-9]*\)\.\([0-9][0-9]*\) .*/\1:\2/'`
cd "$fromdir"
@@ -106,12 +107,35 @@ 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"
+sed -n -e '/^[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]* *1 /p' "$scratchdir/ls-to" >"$scratchdir/ls-diff-all"
+fgrep -v './file1' "$scratchdir/ls-diff-all" >"$scratchdir/ls-diff" || :
if [ -s "$scratchdir/ls-diff" ]; then
echo "Missing hard links on:"
cat "$scratchdir/ls-diff"
exit 1
fi
+if [ ! -s "$scratchdir/ls-diff-all" ]; then
+ echo "Too many hard links on file1!"
+ exit 1
+fi
+
+cd "$chkdir"
+chmod go-rwx . $files
+
+xset user.nice 'this is nice, but different' file1
+xset user.rsync.%stat "100000 0,0 $uid_gid" $files
+xset user.rsync.%stat "40000 0,0 $uid_gid" foo foo/bar
+
+xls $files >"$scratchdir/xattrs.txt"
+
+cd "$fromdir"
+rm -rf "$todir"
+
+# When run by a non-root tester, this checks if no-user-perm files/dirs can be copied.
+checkit "$RSYNC -aiX --fake-super --chmod=a= . ../to" "$chkdir" "$todir" # 2>"$scratchdir/errors.txt"
+
+cd "$todir"
+xls $files | diff $diffopt "$scratchdir/xattrs.txt" -
cd "$fromdir"
rm -rf "$todir" "$chkdir"