| #!/bin/sh | 
 |  | 
 | test_description='checkout -m -- <conflicted path> | 
 |  | 
 | Ensures that checkout -m on a resolved file restores the conflicted file' | 
 |  | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success setup ' | 
 | 	test_tick && | 
 | 	test_commit both.txt both.txt initial && | 
 | 	git branch topic && | 
 | 	test_commit modified_in_master both.txt in_master && | 
 | 	test_commit added_in_master each.txt in_master && | 
 | 	git checkout topic && | 
 | 	test_commit modified_in_topic both.txt in_topic && | 
 | 	test_commit added_in_topic each.txt in_topic | 
 | ' | 
 |  | 
 | test_expect_success 'git merge master' ' | 
 |     test_must_fail git merge master | 
 | ' | 
 |  | 
 | clean_branchnames () { | 
 | 	# Remove branch names after conflict lines | 
 | 	sed 's/^\([<>]\{5,\}\) .*$/\1/' | 
 | } | 
 |  | 
 | test_expect_success '-m restores 2-way conflicted+resolved file' ' | 
 | 	cp each.txt each.txt.conflicted && | 
 | 	echo resolved >each.txt && | 
 | 	git add each.txt && | 
 | 	git checkout -m -- each.txt && | 
 | 	clean_branchnames <each.txt >each.txt.cleaned && | 
 | 	clean_branchnames <each.txt.conflicted >each.txt.conflicted.cleaned && | 
 | 	test_cmp each.txt.conflicted.cleaned each.txt.cleaned | 
 | ' | 
 |  | 
 | test_expect_success '-m restores 3-way conflicted+resolved file' ' | 
 | 	cp both.txt both.txt.conflicted && | 
 | 	echo resolved >both.txt && | 
 | 	git add both.txt && | 
 | 	git checkout -m -- both.txt && | 
 | 	clean_branchnames <both.txt >both.txt.cleaned && | 
 | 	clean_branchnames <both.txt.conflicted >both.txt.conflicted.cleaned && | 
 | 	test_cmp both.txt.conflicted.cleaned both.txt.cleaned | 
 | ' | 
 |  | 
 | test_done |