| #!/bin/sh | 
 |  | 
 | test_description='help.autocorrect finding a match' | 
 |  | 
 | TEST_PASSES_SANITIZE_LEAK=true | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success 'setup' ' | 
 | 	# An alias | 
 | 	git config alias.lgf "log --format=%s --first-parent" && | 
 |  | 
 | 	# A random user-defined command | 
 | 	write_script git-distimdistim <<-EOF && | 
 | 		echo distimdistim was called | 
 | 	EOF | 
 |  | 
 | 	PATH="$PATH:." && | 
 | 	export PATH && | 
 |  | 
 | 	git commit --allow-empty -m "a single log entry" && | 
 |  | 
 | 	# Sanity check | 
 | 	git lgf >actual && | 
 | 	echo "a single log entry" >expect && | 
 | 	test_cmp expect actual && | 
 |  | 
 | 	git distimdistim >actual && | 
 | 	echo "distimdistim was called" >expect && | 
 | 	test_cmp expect actual | 
 | ' | 
 |  | 
 | test_expect_success 'autocorrect showing candidates' ' | 
 | 	git config help.autocorrect 0 && | 
 |  | 
 | 	test_must_fail git lfg 2>actual && | 
 | 	grep "^	lgf" actual && | 
 |  | 
 | 	test_must_fail git distimdist 2>actual && | 
 | 	grep "^	distimdistim" actual | 
 | ' | 
 |  | 
 | for immediate in -1 immediate | 
 | do | 
 | 	test_expect_success 'autocorrect running commands' ' | 
 | 		git config help.autocorrect $immediate && | 
 |  | 
 | 		git lfg >actual && | 
 | 		echo "a single log entry" >expect && | 
 | 		test_cmp expect actual && | 
 |  | 
 | 		git distimdist >actual && | 
 | 		echo "distimdistim was called" >expect && | 
 | 		test_cmp expect actual | 
 | 	' | 
 | done | 
 |  | 
 | test_expect_success 'autocorrect can be declined altogether' ' | 
 | 	git config help.autocorrect never && | 
 |  | 
 | 	test_must_fail git lfg 2>actual && | 
 | 	grep "is not a git command" actual && | 
 | 	test_line_count = 1 actual | 
 | ' | 
 |  | 
 | test_expect_success 'autocorrect works in work tree created from bare repo' ' | 
 | 	git clone --bare . bare.git && | 
 | 	git -C bare.git worktree add ../worktree && | 
 | 	git -C worktree -c help.autocorrect=immediate stauts | 
 | ' | 
 |  | 
 | test_done |