| #!/bin/sh | 
 |  | 
 | test_description='git reflog --updateref' | 
 |  | 
 | TEST_PASSES_SANITIZE_LEAK=true | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success 'setup' ' | 
 | 	git init -b main repo && | 
 | 	( | 
 | 		cd repo && | 
 |  | 
 | 		test_commit A && | 
 | 		test_commit B && | 
 | 		test_commit C && | 
 |  | 
 | 		cp .git/logs/HEAD HEAD.old && | 
 | 		git reset --hard HEAD~ && | 
 | 		cp HEAD.old .git/logs/HEAD | 
 | 	) | 
 | ' | 
 |  | 
 | test_reflog_updateref () { | 
 | 	exp=$1 | 
 | 	shift | 
 | 	args="$@" | 
 |  | 
 | 	test_expect_success REFFILES "get '$exp' with '$args'"  ' | 
 | 		test_when_finished "rm -rf copy" && | 
 | 		cp -R repo copy && | 
 |  | 
 | 		( | 
 | 			cd copy && | 
 |  | 
 | 			$args && | 
 | 			git rev-parse $exp >expect && | 
 | 			git rev-parse HEAD >actual && | 
 |  | 
 | 			test_cmp expect actual | 
 | 		) | 
 | 	' | 
 | } | 
 |  | 
 | test_reflog_updateref B git reflog delete --updateref HEAD@{0} | 
 | test_reflog_updateref B git reflog delete --updateref HEAD@{1} | 
 | test_reflog_updateref C git reflog delete --updateref main@{0} | 
 | test_reflog_updateref B git reflog delete --updateref main@{1} | 
 | test_reflog_updateref B git reflog delete --updateref --rewrite HEAD@{0} | 
 | test_reflog_updateref B git reflog delete --updateref --rewrite HEAD@{1} | 
 | test_reflog_updateref C git reflog delete --updateref --rewrite main@{0} | 
 | test_reflog_updateref B git reflog delete --updateref --rewrite main@{1} | 
 | test_reflog_updateref B test_must_fail git reflog expire  HEAD@{0} | 
 | test_reflog_updateref B test_must_fail git reflog expire  HEAD@{1} | 
 | test_reflog_updateref B test_must_fail git reflog expire  main@{0} | 
 | test_reflog_updateref B test_must_fail git reflog expire  main@{1} | 
 | test_reflog_updateref B test_must_fail git reflog expire --updateref HEAD@{0} | 
 | test_reflog_updateref B test_must_fail git reflog expire --updateref HEAD@{1} | 
 | test_reflog_updateref B test_must_fail git reflog expire --updateref main@{0} | 
 | test_reflog_updateref B test_must_fail git reflog expire --updateref main@{1} | 
 | test_reflog_updateref B test_must_fail git reflog expire --updateref --rewrite HEAD@{0} | 
 | test_reflog_updateref B test_must_fail git reflog expire --updateref --rewrite HEAD@{1} | 
 | test_reflog_updateref B test_must_fail git reflog expire --updateref --rewrite main@{0} | 
 | test_reflog_updateref B test_must_fail git reflog expire --updateref --rewrite main@{1} | 
 |  | 
 | test_done |