89 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			89 lines
		
	
	
		
			1.4 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"
 | |
| 
 | |
| '
 | |
| 
 | |
| test_done
 |