Merge branch 'dk/blame-el' into pu
[git] / t / t1012-read-tree-df.sh
1 #!/bin/sh
2
3 test_description='read-tree D/F conflict corner cases'
4
5 . ./test-lib.sh
6
7 maketree () {
8         (
9                 rm -f .git/index .git/index.lock &&
10                 git clean -d -f -f -q -x &&
11                 name="$1" &&
12                 shift &&
13                 for it
14                 do
15                         path=$(expr "$it" : '\([^:]*\)') &&
16                         mkdir -p $(dirname "$path") &&
17                         echo "$it" >"$path" &&
18                         git update-index --add "$path" || exit
19                 done &&
20                 git tag "$name" $(git write-tree)
21         )
22 }
23
24 settree () {
25         rm -f .git/index .git/index.lock &&
26         git clean -d -f -f -q -x &&
27         git read-tree "$1" &&
28         git checkout-index -f -q -u -a &&
29         git update-index --refresh
30 }
31
32 checkindex () {
33         git ls-files -s |
34         sed "s|^[0-7][0-7]* $_x40 \([0-3]\)     |\1 |" >current &&
35         cat >expect &&
36         test_cmp expect current
37 }
38
39 test_expect_success setup '
40         maketree O-000 a/b-2/c/d a/b/c/d a/x &&
41         maketree A-000 a/b-2/c/d a/b/c/d a/x &&
42         maketree A-001 a/b-2/c/d a/b/c/d a/b/c/e a/x &&
43         maketree B-000 a/b-2/c/d a/b     a/x &&
44
45         maketree O-010 t-0     t/1  t/2 t=3 &&
46         maketree A-010 t-0 t            t=3 &&
47         maketree B-010         t/1:     t=3: &&
48         :
49 '
50
51 test_expect_success '3-way (1)' '
52         settree A-000 &&
53         git read-tree -m -u O-000 A-000 B-000 &&
54         checkindex <<-EOF
55         3 a/b
56         0 a/b-2/c/d
57         1 a/b/c/d
58         2 a/b/c/d
59         0 a/x
60         EOF
61 '
62
63 test_expect_success '3-way (2)' '
64         settree A-001 &&
65         git read-tree -m -u O-000 A-001 B-000 &&
66         checkindex <<-EOF
67         3 a/b
68         0 a/b-2/c/d
69         1 a/b/c/d
70         2 a/b/c/d
71         2 a/b/c/e
72         0 a/x
73         EOF
74 '
75
76 test_expect_success '3-way (3)' '
77         settree A-010 &&
78         git read-tree -m -u O-010 A-010 B-010 &&
79         checkindex <<-EOF
80         2 t
81         1 t-0
82         2 t-0
83         1 t/1
84         3 t/1
85         1 t/2
86         0 t=3
87         EOF
88 '
89
90 test_done