They are equivalents and the former still exists, so as long as the
only change this commit makes are to rewrite test_i18ngrep to
test_grep, there won't be any new bug, even if there still are
callers of test_i18ngrep remaining in the tree, or when merged to
other topics that add new uses of test_i18ngrep.
This patch was produced more or less with
    git grep -l -e 'test_i18ngrep ' 't/t[0-9][0-9][0-9][0-9]-*.sh' |
    xargs perl -p -i -e 's/test_i18ngrep /test_grep /'
and a good way to sanity check the result yourself is to run the
above in a checkout of c4603c1c (test framework: further deprecate
test_i18ngrep, 2023-10-31) and compare the resulting working tree
contents with the result of applying this patch to the same commit.
You'll see that test_i18ngrep in a few t/lib-*.sh files corrected,
in addition to the manual reproduction.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
	
		
			
				
	
	
		
			138 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
test_description='reference transaction hooks'
 | 
						|
 | 
						|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 | 
						|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 | 
						|
 | 
						|
TEST_PASSES_SANITIZE_LEAK=true
 | 
						|
. ./test-lib.sh
 | 
						|
 | 
						|
test_expect_success setup '
 | 
						|
	test_commit PRE &&
 | 
						|
	PRE_OID=$(git rev-parse PRE) &&
 | 
						|
	test_commit POST &&
 | 
						|
	POST_OID=$(git rev-parse POST)
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'hook allows updating ref if successful' '
 | 
						|
	git reset --hard PRE &&
 | 
						|
	test_hook reference-transaction <<-\EOF &&
 | 
						|
		echo "$*" >>actual
 | 
						|
	EOF
 | 
						|
	cat >expect <<-EOF &&
 | 
						|
		prepared
 | 
						|
		committed
 | 
						|
	EOF
 | 
						|
	git update-ref HEAD POST &&
 | 
						|
	test_cmp expect actual
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'hook aborts updating ref in prepared state' '
 | 
						|
	git reset --hard PRE &&
 | 
						|
	test_hook reference-transaction <<-\EOF &&
 | 
						|
		if test "$1" = prepared
 | 
						|
		then
 | 
						|
			exit 1
 | 
						|
		fi
 | 
						|
	EOF
 | 
						|
	test_must_fail git update-ref HEAD POST 2>err &&
 | 
						|
	test_grep "ref updates aborted by hook" err
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'hook gets all queued updates in prepared state' '
 | 
						|
	test_when_finished "rm actual" &&
 | 
						|
	git reset --hard PRE &&
 | 
						|
	test_hook reference-transaction <<-\EOF &&
 | 
						|
		if test "$1" = prepared
 | 
						|
		then
 | 
						|
			while read -r line
 | 
						|
			do
 | 
						|
				printf "%s\n" "$line"
 | 
						|
			done >actual
 | 
						|
		fi
 | 
						|
	EOF
 | 
						|
	cat >expect <<-EOF &&
 | 
						|
		$ZERO_OID $POST_OID HEAD
 | 
						|
		$ZERO_OID $POST_OID refs/heads/main
 | 
						|
	EOF
 | 
						|
	git update-ref HEAD POST <<-EOF &&
 | 
						|
		update HEAD $ZERO_OID $POST_OID
 | 
						|
		update refs/heads/main $ZERO_OID $POST_OID
 | 
						|
	EOF
 | 
						|
	test_cmp expect actual
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'hook gets all queued updates in committed state' '
 | 
						|
	test_when_finished "rm actual" &&
 | 
						|
	git reset --hard PRE &&
 | 
						|
	test_hook reference-transaction <<-\EOF &&
 | 
						|
		if test "$1" = committed
 | 
						|
		then
 | 
						|
			while read -r line
 | 
						|
			do
 | 
						|
				printf "%s\n" "$line"
 | 
						|
			done >actual
 | 
						|
		fi
 | 
						|
	EOF
 | 
						|
	cat >expect <<-EOF &&
 | 
						|
		$ZERO_OID $POST_OID HEAD
 | 
						|
		$ZERO_OID $POST_OID refs/heads/main
 | 
						|
	EOF
 | 
						|
	git update-ref HEAD POST &&
 | 
						|
	test_cmp expect actual
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'hook gets all queued updates in aborted state' '
 | 
						|
	test_when_finished "rm actual" &&
 | 
						|
	git reset --hard PRE &&
 | 
						|
	test_hook reference-transaction <<-\EOF &&
 | 
						|
		if test "$1" = aborted
 | 
						|
		then
 | 
						|
			while read -r line
 | 
						|
			do
 | 
						|
				printf "%s\n" "$line"
 | 
						|
			done >actual
 | 
						|
		fi
 | 
						|
	EOF
 | 
						|
	cat >expect <<-EOF &&
 | 
						|
		$ZERO_OID $POST_OID HEAD
 | 
						|
		$ZERO_OID $POST_OID refs/heads/main
 | 
						|
	EOF
 | 
						|
	git update-ref --stdin <<-EOF &&
 | 
						|
		start
 | 
						|
		update HEAD POST $ZERO_OID
 | 
						|
		update refs/heads/main POST $ZERO_OID
 | 
						|
		abort
 | 
						|
	EOF
 | 
						|
	test_cmp expect actual
 | 
						|
'
 | 
						|
 | 
						|
test_expect_success 'interleaving hook calls succeed' '
 | 
						|
	test_when_finished "rm -r target-repo.git" &&
 | 
						|
 | 
						|
	git init --bare target-repo.git &&
 | 
						|
 | 
						|
	test_hook -C target-repo.git reference-transaction <<-\EOF &&
 | 
						|
		echo $0 "$@" >>actual
 | 
						|
	EOF
 | 
						|
 | 
						|
	test_hook -C target-repo.git update <<-\EOF &&
 | 
						|
		echo $0 "$@" >>actual
 | 
						|
	EOF
 | 
						|
 | 
						|
	cat >expect <<-EOF &&
 | 
						|
		hooks/update refs/tags/PRE $ZERO_OID $PRE_OID
 | 
						|
		hooks/reference-transaction prepared
 | 
						|
		hooks/reference-transaction committed
 | 
						|
		hooks/update refs/tags/POST $ZERO_OID $POST_OID
 | 
						|
		hooks/reference-transaction prepared
 | 
						|
		hooks/reference-transaction committed
 | 
						|
	EOF
 | 
						|
 | 
						|
	git push ./target-repo.git PRE POST &&
 | 
						|
	test_cmp expect target-repo.git/actual
 | 
						|
'
 | 
						|
 | 
						|
test_done
 |