]>
Commit | Line | Data |
---|---|---|
8884cf15 TR |
1 | #!/bin/sh |
2 | ||
3 | test_description='range-diff tests' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | # Note that because of the range-diff's heuristics, test_commit does more | |
8 | # harm than good. We need some real history. | |
9 | ||
10 | test_expect_success 'setup' ' | |
11 | git fast-import < "$TEST_DIRECTORY"/t3206/history.export | |
12 | ' | |
13 | ||
14 | test_expect_success 'simple A..B A..C (unmodified)' ' | |
15 | git range-diff --no-color master..topic master..unmodified \ | |
16 | >actual && | |
17 | cat >expected <<-EOF && | |
18 | 1: 4de457d = 1: 35b9b25 s/5/A/ | |
19 | 2: fccce22 = 2: de345ab s/4/A/ | |
20 | 3: 147e64e = 3: 9af6654 s/11/B/ | |
21 | 4: a63e992 = 4: 2901f77 s/12/B/ | |
22 | EOF | |
23 | test_cmp expected actual | |
24 | ' | |
25 | ||
26 | test_expect_success 'simple B...C (unmodified)' ' | |
27 | git range-diff --no-color topic...unmodified >actual && | |
28 | # same "expected" as above | |
29 | test_cmp expected actual | |
30 | ' | |
31 | ||
32 | test_expect_success 'simple A B C (unmodified)' ' | |
33 | git range-diff --no-color master topic unmodified >actual && | |
34 | # same "expected" as above | |
35 | test_cmp expected actual | |
36 | ' | |
37 | ||
38 | test_expect_success 'trivial reordering' ' | |
39 | git range-diff --no-color master topic reordered >actual && | |
40 | cat >expected <<-EOF && | |
41 | 1: 4de457d = 1: aca177a s/5/A/ | |
42 | 3: 147e64e = 2: 14ad629 s/11/B/ | |
43 | 4: a63e992 = 3: ee58208 s/12/B/ | |
44 | 2: fccce22 = 4: 307b27a s/4/A/ | |
45 | EOF | |
46 | test_cmp expected actual | |
47 | ' | |
48 | ||
49 | test_expect_success 'removed a commit' ' | |
50 | git range-diff --no-color master topic removed >actual && | |
51 | cat >expected <<-EOF && | |
52 | 1: 4de457d = 1: 7657159 s/5/A/ | |
53 | 2: fccce22 < -: ------- s/4/A/ | |
54 | 3: 147e64e = 2: 43d84d3 s/11/B/ | |
55 | 4: a63e992 = 3: a740396 s/12/B/ | |
56 | EOF | |
57 | test_cmp expected actual | |
58 | ' | |
59 | ||
60 | test_expect_success 'added a commit' ' | |
61 | git range-diff --no-color master topic added >actual && | |
62 | cat >expected <<-EOF && | |
63 | 1: 4de457d = 1: 2716022 s/5/A/ | |
64 | 2: fccce22 = 2: b62accd s/4/A/ | |
65 | -: ------- > 3: df46cfa s/6/A/ | |
66 | 3: 147e64e = 4: 3e64548 s/11/B/ | |
67 | 4: a63e992 = 5: 12b4063 s/12/B/ | |
68 | EOF | |
69 | test_cmp expected actual | |
70 | ' | |
71 | ||
72 | test_expect_success 'new base, A B C' ' | |
73 | git range-diff --no-color master topic rebased >actual && | |
74 | cat >expected <<-EOF && | |
75 | 1: 4de457d = 1: cc9c443 s/5/A/ | |
76 | 2: fccce22 = 2: c5d9641 s/4/A/ | |
77 | 3: 147e64e = 3: 28cc2b6 s/11/B/ | |
78 | 4: a63e992 = 4: 5628ab7 s/12/B/ | |
79 | EOF | |
80 | test_cmp expected actual | |
81 | ' | |
82 | ||
83 | test_expect_success 'new base, B...C' ' | |
84 | # this syntax includes the commits from master! | |
85 | git range-diff --no-color topic...rebased >actual && | |
86 | cat >expected <<-EOF && | |
87 | -: ------- > 1: a31b12e unrelated | |
88 | 1: 4de457d = 2: cc9c443 s/5/A/ | |
89 | 2: fccce22 = 3: c5d9641 s/4/A/ | |
90 | 3: 147e64e = 4: 28cc2b6 s/11/B/ | |
91 | 4: a63e992 = 5: 5628ab7 s/12/B/ | |
92 | EOF | |
93 | test_cmp expected actual | |
94 | ' | |
95 | ||
96 | test_expect_success 'changed commit' ' | |
97 | git range-diff --no-color topic...changed >actual && | |
98 | cat >expected <<-EOF && | |
99 | 1: 4de457d = 1: a4b3333 s/5/A/ | |
100 | 2: fccce22 = 2: f51d370 s/4/A/ | |
101 | 3: 147e64e ! 3: 0559556 s/11/B/ | |
102 | @@ -10,7 +10,7 @@ | |
103 | 9 | |
104 | 10 | |
105 | -11 | |
106 | -+B | |
107 | ++BB | |
108 | 12 | |
109 | 13 | |
110 | 14 | |
111 | 4: a63e992 ! 4: d966c5c s/12/B/ | |
112 | @@ -8,7 +8,7 @@ | |
113 | @@ | |
114 | 9 | |
115 | 10 | |
116 | - B | |
117 | + BB | |
118 | -12 | |
119 | +B | |
120 | 13 | |
121 | EOF | |
122 | test_cmp expected actual | |
123 | ' | |
124 | ||
4624185a ÆAB |
125 | test_expect_success 'changed commit with --no-patch diff option' ' |
126 | git range-diff --no-color --no-patch topic...changed >actual && | |
127 | cat >expected <<-EOF && | |
128 | 1: 4de457d = 1: a4b3333 s/5/A/ | |
129 | 2: fccce22 = 2: f51d370 s/4/A/ | |
130 | 3: 147e64e ! 3: 0559556 s/11/B/ | |
131 | 4: a63e992 ! 4: d966c5c s/12/B/ | |
132 | EOF | |
133 | test_cmp expected actual | |
134 | ' | |
135 | ||
136 | test_expect_success 'changed commit with --stat diff option' ' | |
4624185a ÆAB |
137 | git range-diff --no-color --stat topic...changed >actual && |
138 | cat >expected <<-EOF && | |
139 | 1: 4de457d = 1: a4b3333 s/5/A/ | |
140 | a => b | 0 | |
141 | 1 file changed, 0 insertions(+), 0 deletions(-) | |
4624185a ÆAB |
142 | 2: fccce22 = 2: f51d370 s/4/A/ |
143 | a => b | 0 | |
144 | 1 file changed, 0 insertions(+), 0 deletions(-) | |
4624185a ÆAB |
145 | 3: 147e64e ! 3: 0559556 s/11/B/ |
146 | a => b | 0 | |
147 | 1 file changed, 0 insertions(+), 0 deletions(-) | |
4624185a ÆAB |
148 | 4: a63e992 ! 4: d966c5c s/12/B/ |
149 | a => b | 0 | |
150 | 1 file changed, 0 insertions(+), 0 deletions(-) | |
4624185a ÆAB |
151 | EOF |
152 | test_cmp expected actual | |
153 | ' | |
154 | ||
0e573e8f LDM |
155 | test_expect_success 'changed commit with sm config' ' |
156 | git range-diff --no-color --submodule=log topic...changed >actual && | |
157 | cat >expected <<-EOF && | |
158 | 1: 4de457d = 1: a4b3333 s/5/A/ | |
159 | 2: fccce22 = 2: f51d370 s/4/A/ | |
160 | 3: 147e64e ! 3: 0559556 s/11/B/ | |
161 | @@ -10,7 +10,7 @@ | |
162 | 9 | |
163 | 10 | |
164 | -11 | |
165 | -+B | |
166 | ++BB | |
167 | 12 | |
168 | 13 | |
169 | 14 | |
170 | 4: a63e992 ! 4: d966c5c s/12/B/ | |
171 | @@ -8,7 +8,7 @@ | |
172 | @@ | |
173 | 9 | |
174 | 10 | |
175 | - B | |
176 | + BB | |
177 | -12 | |
178 | +B | |
179 | 13 | |
180 | EOF | |
181 | test_cmp expected actual | |
182 | ' | |
183 | ||
51bbcda1 JH |
184 | test_expect_success 'no commits on one side' ' |
185 | git commit --amend -m "new message" && | |
186 | git range-diff master HEAD@{1} HEAD | |
187 | ' | |
188 | ||
8884cf15 TR |
189 | test_expect_success 'changed message' ' |
190 | git range-diff --no-color topic...changed-message >actual && | |
191 | sed s/Z/\ /g >expected <<-EOF && | |
192 | 1: 4de457d = 1: f686024 s/5/A/ | |
193 | 2: fccce22 ! 2: 4ab067d s/4/A/ | |
194 | @@ -2,6 +2,8 @@ | |
195 | Z | |
196 | Z s/4/A/ | |
197 | Z | |
198 | + Also a silly comment here! | |
199 | + | |
2543a641 SB |
200 | Z diff --git a/file b/file |
201 | Z --- a/file | |
202 | Z +++ b/file | |
8884cf15 TR |
203 | 3: 147e64e = 3: b9cb956 s/11/B/ |
204 | 4: a63e992 = 4: 8add5f1 s/12/B/ | |
205 | EOF | |
206 | test_cmp expected actual | |
207 | ' | |
208 | ||
c5e64caa SB |
209 | test_expect_success 'dual-coloring' ' |
210 | sed -e "s|^:||" >expect <<-\EOF && | |
211 | :<YELLOW>1: a4b3333 = 1: f686024 s/5/A/<RESET> | |
212 | :<RED>2: f51d370 <RESET><YELLOW>!<RESET><GREEN> 2: 4ab067d<RESET><YELLOW> s/4/A/<RESET> | |
213 | : <REVERSE><CYAN>@@ -2,6 +2,8 @@<RESET> | |
214 | : <RESET> | |
215 | : s/4/A/<RESET> | |
216 | : <RESET> | |
217 | : <REVERSE><GREEN>+<RESET><BOLD> Also a silly comment here!<RESET> | |
29ef759d | 218 | : <REVERSE><GREEN>+<RESET> |
2543a641 SB |
219 | : diff --git a/file b/file<RESET> |
220 | : --- a/file<RESET> | |
221 | : +++ b/file<RESET> | |
c5e64caa SB |
222 | :<RED>3: 0559556 <RESET><YELLOW>!<RESET><GREEN> 3: b9cb956<RESET><YELLOW> s/11/B/<RESET> |
223 | : <REVERSE><CYAN>@@ -10,7 +10,7 @@<RESET> | |
224 | : 9<RESET> | |
225 | : 10<RESET> | |
226 | : <RED> -11<RESET> | |
227 | : <REVERSE><RED>-<RESET><FAINT;GREEN>+BB<RESET> | |
228 | : <REVERSE><GREEN>+<RESET><BOLD;GREEN>+B<RESET> | |
229 | : 12<RESET> | |
230 | : 13<RESET> | |
231 | : 14<RESET> | |
232 | :<RED>4: d966c5c <RESET><YELLOW>!<RESET><GREEN> 4: 8add5f1<RESET><YELLOW> s/12/B/<RESET> | |
233 | : <REVERSE><CYAN>@@ -8,7 +8,7 @@<RESET> | |
234 | : <CYAN> @@<RESET> | |
235 | : 9<RESET> | |
236 | : 10<RESET> | |
237 | : <REVERSE><RED>-<RESET><FAINT> BB<RESET> | |
238 | : <REVERSE><GREEN>+<RESET><BOLD> B<RESET> | |
239 | : <RED> -12<RESET> | |
240 | : <GREEN> +B<RESET> | |
241 | : 13<RESET> | |
242 | EOF | |
243 | git range-diff changed...changed-message --color --dual-color >actual.raw && | |
244 | test_decode_color >actual <actual.raw && | |
245 | test_cmp expect actual | |
246 | ' | |
247 | ||
2e6fd71a | 248 | for prev in topic master..topic |
31e2617a ES |
249 | do |
250 | test_expect_success "format-patch --range-diff=$prev" ' | |
ac0edf1f | 251 | git format-patch --cover-letter --range-diff=$prev \ |
31e2617a | 252 | master..unmodified >actual && |
ac0edf1f MÅ |
253 | test_when_finished "rm 000?-*" && |
254 | test_line_count = 5 actual && | |
255 | test_i18ngrep "^Range-diff:$" 0000-* && | |
256 | grep "= 1: .* s/5/A" 0000-* && | |
257 | grep "= 2: .* s/4/A" 0000-* && | |
258 | grep "= 3: .* s/11/B" 0000-* && | |
259 | grep "= 4: .* s/12/B" 0000-* | |
31e2617a ES |
260 | ' |
261 | done | |
262 | ||
cdc067c3 | 263 | test_expect_success 'format-patch --range-diff as commentary' ' |
ac0edf1f MÅ |
264 | git format-patch --range-diff=HEAD~1 HEAD~1 >actual && |
265 | test_when_finished "rm 0001-*" && | |
266 | test_line_count = 1 actual && | |
267 | test_i18ngrep "^Range-diff:$" 0001-* && | |
268 | grep "> 1: .* new message" 0001-* | |
cdc067c3 DS |
269 | ' |
270 | ||
8884cf15 | 271 | test_done |