Subject: [PATCH v2] t1301-shared-repo: Fix forced modes test, but it still shows a flaw

From: Johannes Sixt <[email-masked]>
Date: Sun, 12 Apr 2009 21:22:02 +0200

This test was added recently (5a688fe, "core.sharedrepository = 0mode"
should set, not loosen; 2009-03-28). It checked the result of a sed
invocation for emptyness, but in some cases it forgot to print anything
at all, so that those checks would never be false.

Due to this mistake, it went unnoticed that the files in objects/info are
not necessarily 0440, but can also be 0640. This directory is now exempt
from the check.

Moreover, COMMIT_EDITMSG is still world-readable. This is either a bug in
git, or a flaw in the test (the first sed expression). This patch does not
disambiguate these two cases, but only declares the test case as an
expected failure.

Finally, this test cannot be run on Windows (requires POSIXPERM).

Signed-off-by: Johannes Sixt <[email-masked]>
---
Sorry, the first round was whitespace damaged for some reason.

I could now test the result on Linux, and, lo and behold, it shows a bug:
Either in git, or in the test: COMMIT_EDITMSG is still world-readable, as
is shown by the first sed expression that was fixed (2nd hunk).

-- Hannes

 t/t1301-shared-repo.sh |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/t/t1301-shared-repo.sh b/t/t1301-shared-repo.sh
index 750fbb3..71be308 100755
--- a/t/t1301-shared-repo.sh
+++ b/t/t1301-shared-repo.sh
@@ -126,7 +126,7 @@ test_expect_success POSIXPERM 'git reflog expire honors 
core.sharedRepository' '
 	esac
 '
 
-test_expect_success 'forced modes' '
+test_expect_failure POSIXPERM 'forced modes' '
 	mkdir -p templates/hooks &&
 	echo update-server-info >templates/hooks/post-update &&
 	chmod +x templates/hooks/post-update &&
@@ -145,7 +145,7 @@ test_expect_success 'forced modes' '
 	xargs ls -ld >actual &&
 
 	# Everything must be unaccessible to others
-	test -z "$(sed -n -e "/^.......---/d" actual)" &&
+	test -z "$(sed -e "/^.......---/d" actual)" &&
 
 	# All directories must have either 2770 or 770
 	test -z "$(sed -n -e "/^drwxrw[sx]---/d" -e "/^d/p" actual)" &&
@@ -156,10 +156,12 @@ test_expect_success 'forced modes' '
 		p
 	}" actual)" &&
 
-	# All files inside objects must be 0440
+	# All files inside objects (except objects/info) must be 0440
 	test -z "$(sed -n -e "/objects\//{
 		/^d/d
+		/info/d
 		/^-r--r-----/d
+		p
 	}" actual)"
 '
 
-- 
1.6.2.1.224.g2225f