Code

Fix testcase failure when extended attributes are in use
authorJunio C Hamano <gitster@pobox.com>
Mon, 20 Oct 2008 05:51:17 +0000 (22:51 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 20 Oct 2008 05:51:17 +0000 (22:51 -0700)
06cbe855 (Make core.sharedRepository more generic, 2008-04-16) made
several testcases in t1301-shared-repo.sh which fail if on a system
which creates files with extended attributes (e.g. SELinux), since ls
appends a '+' sign to the permission set in such cases.  In fact,
POSIX.1 allows ls to add a single printable character after the usual
3x3 permission bits to show that an optional alternate/additional access
method is associated with the path.

This fixes the testcase to strip any such sign prior to verifying the
permission set.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Tested-by: Deskin Miller <deskinm@umich.edu>
t/t1301-shared-repo.sh

index 2275caa317c8b7237c6f118251dc2d34cf10e218..653362ba221ee017512264c83a216b1ad1723bcd 100755 (executable)
@@ -20,6 +20,10 @@ test_expect_success 'shared = 0400 (faulty permission u-w)' '
        test $ret != "0"
 '
 
+modebits () {
+       ls -l "$1" | sed -e 's|^\(..........\).*|\1|'
+}
+
 for u in 002 022
 do
        test_expect_success "shared=1 does not clear bits preset by umask $u" '
@@ -85,8 +89,7 @@ do
 
                rm -f .git/info/refs &&
                git update-server-info &&
-               actual="$(ls -l .git/info/refs)" &&
-               actual=${actual%% *} &&
+               actual="$(modebits .git/info/refs)" &&
                test "x$actual" = "x-$y" || {
                        ls -lt .git/info
                        false
@@ -98,8 +101,7 @@ do
 
                rm -f .git/info/refs &&
                git update-server-info &&
-               actual="$(ls -l .git/info/refs)" &&
-               actual=${actual%% *} &&
+               actual="$(modebits .git/info/refs)" &&
                test "x$actual" = "x-$x" || {
                        ls -lt .git/info
                        false