]>
Commit | Line | Data |
---|---|---|
934f930b JH |
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 | maketree O-020 ds/dma/ioat.c ds/dma/ioat_dca.c && | |
50 | maketree A-020 ds/dma/ioat/Makefile ds/dma/ioat/registers.h && | |
51 | : | |
52 | ' | |
53 | ||
730f7284 | 54 | test_expect_success '3-way (1)' ' |
934f930b JH |
55 | settree A-000 && |
56 | git read-tree -m -u O-000 A-000 B-000 && | |
57 | checkindex <<-EOF | |
58 | 3 a/b | |
59 | 0 a/b-2/c/d | |
60 | 1 a/b/c/d | |
61 | 2 a/b/c/d | |
62 | 0 a/x | |
63 | EOF | |
64 | ' | |
65 | ||
730f7284 | 66 | test_expect_success '3-way (2)' ' |
934f930b JH |
67 | settree A-001 && |
68 | git read-tree -m -u O-000 A-001 B-000 && | |
69 | checkindex <<-EOF | |
70 | 3 a/b | |
71 | 0 a/b-2/c/d | |
72 | 1 a/b/c/d | |
73 | 2 a/b/c/d | |
74 | 2 a/b/c/e | |
75 | 0 a/x | |
76 | EOF | |
77 | ' | |
78 | ||
730f7284 | 79 | test_expect_success '3-way (3)' ' |
934f930b JH |
80 | settree A-010 && |
81 | git read-tree -m -u O-010 A-010 B-010 && | |
82 | checkindex <<-EOF | |
83 | 2 t | |
84 | 1 t-0 | |
85 | 2 t-0 | |
86 | 1 t/1 | |
87 | 3 t/1 | |
88 | 1 t/2 | |
89 | 0 t=3 | |
90 | EOF | |
91 | ' | |
92 | ||
730f7284 | 93 | test_expect_success '2-way (1)' ' |
934f930b JH |
94 | settree O-020 && |
95 | git read-tree -m -u O-020 A-020 && | |
96 | checkindex <<-EOF | |
97 | 0 ds/dma/ioat/Makefile | |
98 | 0 ds/dma/ioat/registers.h | |
99 | EOF | |
100 | ' | |
101 | ||
102 | test_done |