]>
Commit | Line | Data |
---|---|---|
4d5f3471 JK |
1 | #!/bin/sh |
2 | ||
3 | test_description='combined and merge diff handle binary files and textconv' | |
4 | . ./test-lib.sh | |
5 | ||
6 | test_expect_success 'setup binary merge conflict' ' | |
7 | echo oneQ1 | q_to_nul >binary && | |
8 | git add binary && | |
9 | git commit -m one && | |
10 | echo twoQ2 | q_to_nul >binary && | |
11 | git commit -a -m two && | |
12 | git checkout -b branch-binary HEAD^ && | |
13 | echo threeQ3 | q_to_nul >binary && | |
14 | git commit -a -m three && | |
15 | test_must_fail git merge master && | |
16 | echo resolvedQhooray | q_to_nul >binary && | |
17 | git commit -a -m resolved | |
18 | ' | |
19 | ||
20 | cat >expect <<'EOF' | |
21 | resolved | |
22 | ||
23 | diff --git a/binary b/binary | |
24 | index 7ea6ded..9563691 100644 | |
25 | Binary files a/binary and b/binary differ | |
26 | resolved | |
27 | ||
28 | diff --git a/binary b/binary | |
29 | index 6197570..9563691 100644 | |
30 | Binary files a/binary and b/binary differ | |
31 | EOF | |
32 | test_expect_success 'diff -m indicates binary-ness' ' | |
33 | git show --format=%s -m >actual && | |
34 | test_cmp expect actual | |
35 | ' | |
36 | ||
37 | cat >expect <<'EOF' | |
38 | resolved | |
39 | ||
40 | diff --combined binary | |
41 | index 7ea6ded,6197570..9563691 | |
42 | Binary files differ | |
43 | EOF | |
44 | test_expect_success 'diff -c indicates binary-ness' ' | |
45 | git show --format=%s -c >actual && | |
46 | test_cmp expect actual | |
47 | ' | |
48 | ||
49 | cat >expect <<'EOF' | |
50 | resolved | |
51 | ||
52 | diff --cc binary | |
53 | index 7ea6ded,6197570..9563691 | |
54 | Binary files differ | |
55 | EOF | |
56 | test_expect_success 'diff --cc indicates binary-ness' ' | |
57 | git show --format=%s --cc >actual && | |
58 | test_cmp expect actual | |
59 | ' | |
60 | ||
61 | test_expect_success 'setup non-binary with binary attribute' ' | |
62 | git checkout master && | |
63 | test_commit one text && | |
64 | test_commit two text && | |
65 | git checkout -b branch-text HEAD^ && | |
66 | test_commit three text && | |
67 | test_must_fail git merge master && | |
68 | test_commit resolved text && | |
69 | echo text -diff >.gitattributes | |
70 | ' | |
71 | ||
72 | cat >expect <<'EOF' | |
73 | resolved | |
74 | ||
75 | diff --git a/text b/text | |
76 | index 2bdf67a..2ab19ae 100644 | |
77 | Binary files a/text and b/text differ | |
78 | resolved | |
79 | ||
80 | diff --git a/text b/text | |
81 | index f719efd..2ab19ae 100644 | |
82 | Binary files a/text and b/text differ | |
83 | EOF | |
84 | test_expect_success 'diff -m respects binary attribute' ' | |
85 | git show --format=%s -m >actual && | |
86 | test_cmp expect actual | |
87 | ' | |
88 | ||
89 | cat >expect <<'EOF' | |
90 | resolved | |
91 | ||
92 | diff --combined text | |
93 | index 2bdf67a,f719efd..2ab19ae | |
94 | Binary files differ | |
95 | EOF | |
96 | test_expect_success 'diff -c respects binary attribute' ' | |
97 | git show --format=%s -c >actual && | |
98 | test_cmp expect actual | |
99 | ' | |
100 | ||
101 | cat >expect <<'EOF' | |
102 | resolved | |
103 | ||
104 | diff --cc text | |
105 | index 2bdf67a,f719efd..2ab19ae | |
106 | Binary files differ | |
107 | EOF | |
108 | test_expect_success 'diff --cc respects binary attribute' ' | |
109 | git show --format=%s --cc >actual && | |
110 | test_cmp expect actual | |
111 | ' | |
112 | ||
0508fe53 JK |
113 | test_expect_success 'setup textconv attribute' ' |
114 | echo "text diff=upcase" >.gitattributes && | |
115 | git config diff.upcase.textconv "tr a-z A-Z <" | |
116 | ' | |
117 | ||
118 | cat >expect <<'EOF' | |
119 | resolved | |
120 | ||
121 | diff --git a/text b/text | |
122 | index 2bdf67a..2ab19ae 100644 | |
123 | --- a/text | |
124 | +++ b/text | |
125 | @@ -1 +1 @@ | |
126 | -THREE | |
127 | +RESOLVED | |
128 | resolved | |
129 | ||
130 | diff --git a/text b/text | |
131 | index f719efd..2ab19ae 100644 | |
132 | --- a/text | |
133 | +++ b/text | |
134 | @@ -1 +1 @@ | |
135 | -TWO | |
136 | +RESOLVED | |
137 | EOF | |
138 | test_expect_success 'diff -m respects textconv attribute' ' | |
139 | git show --format=%s -m >actual && | |
140 | test_cmp expect actual | |
141 | ' | |
142 | ||
143 | cat >expect <<'EOF' | |
144 | resolved | |
145 | ||
146 | diff --combined text | |
147 | index 2bdf67a,f719efd..2ab19ae | |
148 | --- a/text | |
149 | +++ b/text | |
150 | @@@ -1,1 -1,1 +1,1 @@@ | |
151 | - THREE | |
152 | -TWO | |
153 | ++RESOLVED | |
154 | EOF | |
155 | test_expect_success 'diff -c respects textconv attribute' ' | |
156 | git show --format=%s -c >actual && | |
157 | test_cmp expect actual | |
158 | ' | |
159 | ||
160 | cat >expect <<'EOF' | |
161 | resolved | |
162 | ||
163 | diff --cc text | |
164 | index 2bdf67a,f719efd..2ab19ae | |
165 | --- a/text | |
166 | +++ b/text | |
167 | @@@ -1,1 -1,1 +1,1 @@@ | |
168 | - THREE | |
169 | -TWO | |
170 | ++RESOLVED | |
171 | EOF | |
172 | test_expect_success 'diff --cc respects textconv attribute' ' | |
173 | git show --format=%s --cc >actual && | |
174 | test_cmp expect actual | |
175 | ' | |
176 | ||
177 | cat >expect <<'EOF' | |
178 | diff --combined text | |
179 | index 2bdf67a,f719efd..2ab19ae | |
180 | --- a/text | |
181 | +++ b/text | |
182 | @@@ -1,1 -1,1 +1,1 @@@ | |
183 | - three | |
184 | -two | |
185 | ++resolved | |
186 | EOF | |
187 | test_expect_success 'diff-tree plumbing does not respect textconv' ' | |
188 | git diff-tree HEAD -c -p >full && | |
189 | tail -n +2 full >actual && | |
190 | test_cmp expect actual | |
191 | ' | |
192 | ||
193 | cat >expect <<'EOF' | |
194 | diff --cc text | |
195 | index 2bdf67a,f719efd..0000000 | |
196 | --- a/text | |
197 | +++ b/text | |
198 | @@@ -1,1 -1,1 +1,5 @@@ | |
199 | ++<<<<<<< HEAD | |
200 | +THREE | |
201 | ++======= | |
202 | + TWO | |
203 | ++>>>>>>> MASTER | |
204 | EOF | |
205 | test_expect_success 'diff --cc respects textconv on worktree file' ' | |
206 | git reset --hard HEAD^ && | |
207 | test_must_fail git merge master && | |
208 | git diff >actual && | |
209 | test_cmp expect actual | |
210 | ' | |
211 | ||
4d5f3471 | 212 | test_done |