Test 'checkout -m -- path'

Signed-off-by: Pete Harlan <pgit@pcharlan.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Pete Harlan committed Dec 6, 2011 at 23:01 UTC 3d0b05176f0539b8d71e712016c367768fc046d5
1 file changed +47
t/t2023-checkout-m.sh new
+47
@@ -0,0 +1,47 @@
1 +#!/bin/sh
2 +
3 +test_description='checkout -m -- <conflicted path>
4 +
5 +Ensures that checkout -m on a resolved file restores the conflicted file'
6 +
7 +. ./test-lib.sh
8 +
9 +test_expect_success setup '
10 + test_tick &&
11 + test_commit both.txt both.txt initial &&
12 + git branch topic &&
13 + test_commit modified_in_master both.txt in_master &&
14 + test_commit added_in_master each.txt in_master &&
15 + git checkout topic &&
16 + test_commit modified_in_topic both.txt in_topic &&
17 + test_commit added_in_topic each.txt in_topic
18 +'
19 +
20 +test_must_fail git merge master
21 +
22 +clean_branchnames () {
23 + # Remove branch names after conflict lines
24 + sed 's/^\([<>]\{5,\}\) .*$/\1/'
25 +}
26 +
27 +test_expect_success '-m restores 2-way conflicted+resolved file' '
28 + cp each.txt each.txt.conflicted &&
29 + echo resolved >each.txt &&
30 + git add each.txt &&
31 + git checkout -m -- each.txt &&
32 + clean_branchnames <each.txt >each.txt.cleaned &&
33 + clean_branchnames <each.txt.conflicted >each.txt.conflicted.cleaned &&
34 + test_cmp each.txt.conflicted.cleaned each.txt.cleaned
35 +'
36 +
37 +test_expect_success '-m restores 3-way conflicted+resolved file' '
38 + cp both.txt both.txt.conflicted &&
39 + echo resolved >both.txt &&
40 + git add both.txt &&
41 + git checkout -m -- both.txt &&
42 + clean_branchnames <both.txt >both.txt.cleaned &&
43 + clean_branchnames <both.txt.conflicted >both.txt.conflicted.cleaned &&
44 + test_cmp both.txt.conflicted.cleaned both.txt.cleaned
45 +'
46 +
47 +test_done