Merge branch 'lt/diff-stat-show-0-lines'
[git/jnareb-git.git] / t / t4048-diff-combined-binary.sh
blob87a8949500bbfb450624de27f17f1300761cf20e
1 #!/bin/sh
3 test_description='combined and merge diff handle binary files and textconv'
4 . ./test-lib.sh
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
20 cat >expect <<'EOF'
21 resolved
23 diff --git a/binary b/binary
24 index 7ea6ded..9563691 100644
25 Binary files a/binary and b/binary differ
26 resolved
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
37 cat >expect <<'EOF'
38 resolved
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
49 cat >expect <<'EOF'
50 resolved
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
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
72 cat >expect <<'EOF'
73 resolved
75 diff --git a/text b/text
76 index 2bdf67a..2ab19ae 100644
77 Binary files a/text and b/text differ
78 resolved
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
89 cat >expect <<'EOF'
90 resolved
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
101 cat >expect <<'EOF'
102 resolved
104 diff --cc text
105 index 2bdf67a,f719efd..2ab19ae
106 Binary files differ
108 test_expect_success 'diff --cc respects binary attribute' '
109 git show --format=%s --cc >actual &&
110 test_cmp expect actual
113 test_expect_success 'setup textconv attribute' '
114 echo "text diff=upcase" >.gitattributes &&
115 git config diff.upcase.textconv "tr a-z A-Z <"
118 cat >expect <<'EOF'
119 resolved
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
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
138 test_expect_success 'diff -m respects textconv attribute' '
139 git show --format=%s -m >actual &&
140 test_cmp expect actual
143 cat >expect <<'EOF'
144 resolved
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
155 test_expect_success 'diff -c respects textconv attribute' '
156 git show --format=%s -c >actual &&
157 test_cmp expect actual
160 cat >expect <<'EOF'
161 resolved
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
172 test_expect_success 'diff --cc respects textconv attribute' '
173 git show --format=%s --cc >actual &&
174 test_cmp expect actual
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
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
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
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
212 test_done