]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
Improve the cp/parent-perm test.
authorJim Meyering <meyering@redhat.com>
Fri, 11 Jan 2008 14:10:02 +0000 (15:10 +0100)
committerJim Meyering <meyering@redhat.com>
Thu, 31 Jan 2008 09:06:06 +0000 (10:06 +0100)
* tests/cp/parent-perm: Also check that perms of existing dest
dirs are changed to match those of corresponding src dir

ChangeLog
tests/cp/parent-perm

index 8788843bfa9e83cf1deb497fe3c926bada1ae984..205ef07f4034b03fcf31309e55a9577bf56e34e9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-01-31  Jim Meyering  <meyering@redhat.com>
+
+       Improve the cp/parent-perm test.
+       * tests/cp/parent-perm: Also check that perms of existing dest
+       dirs are changed to match those of corresponding src dir
+
 2008-01-30  Paul Eggert  <eggert@cs.ucla.edu>
 
        Don't modify argv in dd due to ',' in arguments.
index cedcac4df75cebd8912f8d78f2aeac98df3e416c..1e9e8e1ea860ae0afabe8f99fc395664e39a1e0f 100755 (executable)
@@ -24,10 +24,17 @@ fi
 . $srcdir/../envvar-check
 . $srcdir/../test-lib.sh
 
+. $abs_srcdir/../umask-check
+
 mkdir -p a/b/c a/b/d e || framework_failure
 touch a/b/c/foo a/b/d/foo || framework_failure
 cp -p --parent a/b/c/foo e || framework_failure
 
+# Make permissions of e/a different, so that we exercise the
+# code in cp -p --parents that propagates permissions even
+# to a destination directory that it doesn't create.
+chmod g-rx e/a e/a/b || framework_failure
+
 fail=0
 cp -p --parent a/b/d/foo e || fail=1
 
@@ -41,7 +48,10 @@ cp -p --parent a/b/d/foo e || fail=1
 # so "a/" inherits that.  However, when the user does not belong to
 # the group of the build directory, chmod ("a/e", 02755) returns 0,
 # yet fails to set the S_ISGID bit.
-test $(stat --printf %A a|sed s/s/x/g) = $(stat --printf %A e/a|sed s/s/x/g) ||
+for dir in a a/b a/b/d; do
+  test $(stat --printf %A $dir|sed s/s/x/g) \
+     = $(stat --printf %A e/$dir|sed s/s/x/g) ||
   fail=1
+done
 
 (exit $fail); exit $fail