 063b7e0cd4
			
		
	
	063b7e0cd4
	
	
	
		
			
			Change this test to skip test with test prerequisites, and to do setup work in tests. This improves the skipped statistics on platforms where the test isn't run. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # Copyright (c) 2010 Matthieu Moy
 | |
| #
 | |
| 
 | |
| test_description='Test repository with default ACL'
 | |
| 
 | |
| # Create the test repo with restrictive umask
 | |
| # => this must come before . ./test-lib.sh
 | |
| umask 077
 | |
| 
 | |
| . ./test-lib.sh
 | |
| 
 | |
| # We need an arbitrary other user give permission to using ACLs. root
 | |
| # is a good candidate: exists on all unices, and it has permission
 | |
| # anyway, so we don't create a security hole running the testsuite.
 | |
| 
 | |
| setfacl_out="$(setfacl -m u:root:rwx . 2>&1)"
 | |
| setfacl_ret=$?
 | |
| 
 | |
| if test $setfacl_ret != 0
 | |
| then
 | |
| 	say "Unable to use setfacl (output: '$setfacl_out'; return code: '$setfacl_ret')"
 | |
| else
 | |
| 	test_set_prereq SETFACL
 | |
| fi
 | |
| 
 | |
| check_perms_and_acl () {
 | |
| 	test -r "$1" &&
 | |
| 	getfacl "$1" > actual &&
 | |
| 	grep -q "user:root:rwx" actual &&
 | |
| 	grep -q "user:${LOGNAME}:rwx" actual &&
 | |
| 	egrep "mask::?r--" actual > /dev/null 2>&1 &&
 | |
| 	grep -q "group::---" actual || false
 | |
| }
 | |
| 
 | |
| dirs_to_set="./ .git/ .git/objects/ .git/objects/pack/"
 | |
| 
 | |
| test_expect_success SETFACL 'Setup test repo' '
 | |
| 	setfacl -m d:u::rwx,d:g::---,d:o:---,d:m:rwx $dirs_to_set &&
 | |
| 	setfacl -m m:rwx               $dirs_to_set &&
 | |
| 	setfacl -m u:root:rwx          $dirs_to_set &&
 | |
| 	setfacl -m d:u:"$LOGNAME":rwx  $dirs_to_set &&
 | |
| 	setfacl -m d:u:root:rwx        $dirs_to_set &&
 | |
| 
 | |
| 	touch file.txt &&
 | |
| 	git add file.txt &&
 | |
| 	git commit -m "init"
 | |
| '
 | |
| 
 | |
| test_expect_success SETFACL 'Objects creation does not break ACLs with restrictive umask' '
 | |
| 	# SHA1 for empty blob
 | |
| 	check_perms_and_acl .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
 | |
| '
 | |
| 
 | |
| test_expect_success SETFACL 'git gc does not break ACLs with restrictive umask' '
 | |
| 	git gc &&
 | |
| 	check_perms_and_acl .git/objects/pack/*.pack
 | |
| '
 | |
| 
 | |
| test_done
 |