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