| #!/bin/sh | 
 |  | 
 | test_description='log --grep/--author/--regexp-ignore-case/-S/-G' | 
 | . ./test-lib.sh | 
 |  | 
 | test_log () { | 
 | 	expect=$1 | 
 | 	kind=$2 | 
 | 	needle=$3 | 
 | 	shift 3 | 
 | 	rest=$@ | 
 |  | 
 | 	case $kind in | 
 | 	--*) | 
 | 		opt=$kind=$needle | 
 | 		;; | 
 | 	*) | 
 | 		opt=$kind$needle | 
 | 		;; | 
 | 	esac | 
 | 	case $expect in | 
 | 	expect_nomatch) | 
 | 		match=nomatch | 
 | 		;; | 
 | 	*) | 
 | 		match=match | 
 | 		;; | 
 | 	esac | 
 |  | 
 | 	test_expect_success "log $kind${rest:+ $rest} ($match)" " | 
 | 		git log $rest $opt --format=%H >actual && | 
 | 		test_cmp $expect actual | 
 | 	" | 
 | } | 
 |  | 
 | # test -i and --regexp-ignore-case and expect both to behave the same way | 
 | test_log_icase () { | 
 | 	test_log $@ --regexp-ignore-case | 
 | 	test_log $@ -i | 
 | } | 
 |  | 
 | test_expect_success setup ' | 
 | 	>expect_nomatch && | 
 |  | 
 | 	>file && | 
 | 	git add file && | 
 | 	test_tick && | 
 | 	git commit -m initial && | 
 | 	git rev-parse --verify HEAD >expect_initial && | 
 |  | 
 | 	echo Picked >file && | 
 | 	git add file && | 
 | 	test_tick && | 
 | 	git commit --author="Another Person <another@example.com>" -m second && | 
 | 	git rev-parse --verify HEAD >expect_second | 
 | ' | 
 |  | 
 | test_log	expect_initial	--grep initial | 
 | test_log	expect_nomatch	--grep InItial | 
 | test_log_icase	expect_initial	--grep InItial | 
 | test_log_icase	expect_nomatch	--grep initail | 
 |  | 
 | test_log	expect_second	--author Person | 
 | test_log	expect_nomatch	--author person | 
 | test_log_icase	expect_second	--author person | 
 | test_log_icase	expect_nomatch	--author spreon | 
 |  | 
 | test_log	expect_nomatch	-G picked | 
 | test_log	expect_second	-G Picked | 
 | test_log_icase	expect_nomatch	-G pickle | 
 | test_log_icase	expect_second	-G picked | 
 |  | 
 | test_expect_success 'log -G --textconv (missing textconv tool)' ' | 
 | 	echo "* diff=test" >.gitattributes && | 
 | 	test_must_fail git -c diff.test.textconv=missing log -Gfoo && | 
 | 	rm .gitattributes | 
 | ' | 
 |  | 
 | test_expect_success 'log -G --no-textconv (missing textconv tool)' ' | 
 | 	echo "* diff=test" >.gitattributes && | 
 | 	git -c diff.test.textconv=missing log -Gfoo --no-textconv >actual && | 
 | 	test_cmp expect_nomatch actual && | 
 | 	rm .gitattributes | 
 | ' | 
 |  | 
 | test_log	expect_nomatch	-S picked | 
 | test_log	expect_second	-S Picked | 
 | test_log_icase	expect_second	-S picked | 
 | test_log_icase	expect_nomatch	-S pickle | 
 |  | 
 | test_log	expect_nomatch	-S p.cked --pickaxe-regex | 
 | test_log	expect_second	-S P.cked --pickaxe-regex | 
 | test_log_icase	expect_second	-S p.cked --pickaxe-regex | 
 | test_log_icase	expect_nomatch	-S p.ckle --pickaxe-regex | 
 |  | 
 | test_expect_success 'log -S --textconv (missing textconv tool)' ' | 
 | 	echo "* diff=test" >.gitattributes && | 
 | 	test_must_fail git -c diff.test.textconv=missing log -Sfoo && | 
 | 	rm .gitattributes | 
 | ' | 
 |  | 
 | test_expect_success 'log -S --no-textconv (missing textconv tool)' ' | 
 | 	echo "* diff=test" >.gitattributes && | 
 | 	git -c diff.test.textconv=missing log -Sfoo --no-textconv >actual && | 
 | 	test_cmp expect_nomatch actual && | 
 | 	rm .gitattributes | 
 | ' | 
 |  | 
 | test_done |