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
+
113
+test_done