 c35ec8c901
			
		
	
	c35ec8c901
	
	
	
		
			
			Ensure that the pre-commit hook has access to GIT_PREFIX. Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			122 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| test_description='pre-commit hook'
 | |
| 
 | |
| . ./test-lib.sh
 | |
| 
 | |
| test_expect_success 'with no hook' '
 | |
| 
 | |
| 	echo "foo" > file &&
 | |
| 	git add file &&
 | |
| 	git commit -m "first"
 | |
| 
 | |
| '
 | |
| 
 | |
| test_expect_success '--no-verify with no hook' '
 | |
| 
 | |
| 	echo "bar" > file &&
 | |
| 	git add file &&
 | |
| 	git commit --no-verify -m "bar"
 | |
| 
 | |
| '
 | |
| 
 | |
| # now install hook that always succeeds
 | |
| HOOKDIR="$(git rev-parse --git-dir)/hooks"
 | |
| HOOK="$HOOKDIR/pre-commit"
 | |
| mkdir -p "$HOOKDIR"
 | |
| cat > "$HOOK" <<EOF
 | |
| #!/bin/sh
 | |
| exit 0
 | |
| EOF
 | |
| chmod +x "$HOOK"
 | |
| 
 | |
| test_expect_success 'with succeeding hook' '
 | |
| 
 | |
| 	echo "more" >> file &&
 | |
| 	git add file &&
 | |
| 	git commit -m "more"
 | |
| 
 | |
| '
 | |
| 
 | |
| test_expect_success '--no-verify with succeeding hook' '
 | |
| 
 | |
| 	echo "even more" >> file &&
 | |
| 	git add file &&
 | |
| 	git commit --no-verify -m "even more"
 | |
| 
 | |
| '
 | |
| 
 | |
| # now a hook that fails
 | |
| cat > "$HOOK" <<EOF
 | |
| #!/bin/sh
 | |
| exit 1
 | |
| EOF
 | |
| 
 | |
| test_expect_success 'with failing hook' '
 | |
| 
 | |
| 	echo "another" >> file &&
 | |
| 	git add file &&
 | |
| 	test_must_fail git commit -m "another"
 | |
| 
 | |
| '
 | |
| 
 | |
| test_expect_success '--no-verify with failing hook' '
 | |
| 
 | |
| 	echo "stuff" >> file &&
 | |
| 	git add file &&
 | |
| 	git commit --no-verify -m "stuff"
 | |
| 
 | |
| '
 | |
| 
 | |
| chmod -x "$HOOK"
 | |
| test_expect_success POSIXPERM 'with non-executable hook' '
 | |
| 
 | |
| 	echo "content" >> file &&
 | |
| 	git add file &&
 | |
| 	git commit -m "content"
 | |
| 
 | |
| '
 | |
| 
 | |
| test_expect_success POSIXPERM '--no-verify with non-executable hook' '
 | |
| 
 | |
| 	echo "more content" >> file &&
 | |
| 	git add file &&
 | |
| 	git commit --no-verify -m "more content"
 | |
| 
 | |
| '
 | |
| chmod +x "$HOOK"
 | |
| 
 | |
| # a hook that checks $GIT_PREFIX and succeeds inside the
 | |
| # success/ subdirectory only
 | |
| cat > "$HOOK" <<EOF
 | |
| #!/bin/sh
 | |
| test \$GIT_PREFIX = success/
 | |
| EOF
 | |
| 
 | |
| test_expect_success 'with hook requiring GIT_PREFIX' '
 | |
| 
 | |
| 	echo "more content" >> file &&
 | |
| 	git add file &&
 | |
| 	mkdir success &&
 | |
| 	(
 | |
| 		cd success &&
 | |
| 		git commit -m "hook requires GIT_PREFIX = success/"
 | |
| 	) &&
 | |
| 	rmdir success
 | |
| '
 | |
| 
 | |
| test_expect_success 'with failing hook requiring GIT_PREFIX' '
 | |
| 
 | |
| 	echo "more content" >> file &&
 | |
| 	git add file &&
 | |
| 	mkdir fail &&
 | |
| 	(
 | |
| 		cd fail &&
 | |
| 		test_must_fail git commit -m "hook must fail"
 | |
| 	) &&
 | |
| 	rmdir fail &&
 | |
| 	git checkout -- file
 | |
| '
 | |
| 
 | |
| test_done
 |