blob: b8eec8fd2646c15f289c2174eb5b25a532ded49d [file] [log] [blame]
Junio C Hamano31c23732012-03-01 13:26:38 +01001#!/bin/sh
2#
3# Copyright (c) 2012 Zbigniew Jędrzejewski-Szmek
4#
5
6test_description='test --stat output of various commands'
7
8. ./test-lib.sh
9. "$TEST_DIRECTORY"/lib-terminal.sh
10
11# 120 character name
12name=aaaaaaaaaa
13name=$name$name$name$name$name$name$name$name$name$name$name$name
14test_expect_success 'preparation' '
15 >"$name" &&
16 git add "$name" &&
17 git commit -m message &&
18 echo a >"$name" &&
19 git commit -m message "$name"
20'
21
22while read cmd args
23do
24 cat >expect <<-'EOF'
Zbigniew Jędrzejewski-Szmek1b058bc2012-03-01 13:26:43 +010025 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
Junio C Hamano31c23732012-03-01 13:26:38 +010026 EOF
Zbigniew Jędrzejewski-Szmek1b058bc2012-03-01 13:26:43 +010027 test_expect_success "$cmd: small change with long name gives more space to the name" '
Junio C Hamano31c23732012-03-01 13:26:38 +010028 git $cmd $args >output &&
29 grep " | " output >actual &&
30 test_cmp expect actual
31 '
32
33 cat >expect <<-'EOF'
Zbigniew Jędrzejewski-Szmek1b058bc2012-03-01 13:26:43 +010034 ...aaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
Junio C Hamano31c23732012-03-01 13:26:38 +010035 EOF
Zbigniew Jędrzejewski-Szmek1b058bc2012-03-01 13:26:43 +010036 test_expect_success "$cmd --stat=width: a long name is given more room when the bar is short" '
Junio C Hamano31c23732012-03-01 13:26:38 +010037 git $cmd $args --stat=40 >output &&
38 grep " | " output >actual &&
39 test_cmp expect actual
40 '
41
42 test_expect_success "$cmd --stat-width=width with long name" '
43 git $cmd $args --stat-width=40 >output &&
44 grep " | " output >actual &&
45 test_cmp expect actual
46 '
47
48 cat >expect <<-'EOF'
49 ...aaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
50 EOF
51 test_expect_success "$cmd --stat=...,name-width with long name" '
52 git $cmd $args --stat=60,30 >output &&
53 grep " | " output >actual &&
54 test_cmp expect actual
55 '
56
57 test_expect_success "$cmd --stat-name-width with long name" '
58 git $cmd $args --stat-name-width=30 >output &&
59 grep " | " output >actual &&
60 test_cmp expect actual
61 '
62done <<\EOF
63format-patch -1 --stdout
64diff HEAD^ HEAD --stat
65show --stat
66log -1 --stat
67EOF
68
69
70test_expect_success 'preparation for big change tests' '
71 >abcd &&
72 git add abcd &&
73 git commit -m message &&
74 i=0 &&
75 while test $i -lt 1000
76 do
77 echo $i && i=$(($i + 1))
78 done >abcd &&
79 git commit -m message abcd
80'
81
82cat >expect80 <<'EOF'
83 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
84EOF
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -070085cat >expect80-graph <<'EOF'
86| abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
87EOF
Zbigniew Jędrzejewski-Szmekaf9fedc2012-03-01 13:26:39 +010088cat >expect200 <<'EOF'
89 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
90EOF
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -070091cat >expect200-graph <<'EOF'
Lucian Poston36dcc022012-04-16 03:44:52 -070092| abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -070093EOF
Junio C Hamano31c23732012-03-01 13:26:38 +010094while read verb expect cmd args
95do
96 test_expect_success "$cmd $verb COLUMNS (big change)" '
97 COLUMNS=200 git $cmd $args >output
98 grep " | " output >actual &&
99 test_cmp "$expect" actual
100 '
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700101
102 test "$cmd" != diff || continue
103
104 test_expect_success "$cmd --graph $verb COLUMNS (big change)" '
105 COLUMNS=200 git $cmd $args --graph >output
106 grep " | " output >actual &&
107 test_cmp "$expect-graph" actual
108 '
Junio C Hamano31c23732012-03-01 13:26:38 +0100109done <<\EOF
110ignores expect80 format-patch -1 --stdout
Zbigniew Jędrzejewski-Szmekaf9fedc2012-03-01 13:26:39 +0100111respects expect200 diff HEAD^ HEAD --stat
Zbigniew Jędrzejewski-Szmek666c92a2012-03-01 13:26:40 +0100112respects expect200 show --stat
Zbigniew Jędrzejewski-Szmek5e0ec152012-03-01 13:26:41 +0100113respects expect200 log -1 --stat
Junio C Hamano31c23732012-03-01 13:26:38 +0100114EOF
115
Zbigniew Jędrzejewski-Szmekc4432d52012-03-01 13:26:44 +0100116cat >expect40 <<'EOF'
117 abcd | 1000 ++++++++++++++++++++++++++
118EOF
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700119cat >expect40-graph <<'EOF'
Lucian Poston36dcc022012-04-16 03:44:52 -0700120| abcd | 1000 ++++++++++++++++++++++++
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700121EOF
Zbigniew Jędrzejewski-Szmekc4432d52012-03-01 13:26:44 +0100122while read verb expect cmd args
123do
124 test_expect_success "$cmd $verb not enough COLUMNS (big change)" '
125 COLUMNS=40 git $cmd $args >output
126 grep " | " output >actual &&
127 test_cmp "$expect" actual
128 '
Zbigniew Jędrzejewski-Szmekdf444832012-03-01 13:26:46 +0100129
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700130 test "$cmd" != diff || continue
131
132 test_expect_success "$cmd --graph $verb not enough COLUMNS (big change)" '
133 COLUMNS=40 git $cmd $args --graph >output
134 grep " | " output >actual &&
135 test_cmp "$expect-graph" actual
136 '
Lucian Poston36dcc022012-04-16 03:44:52 -0700137done <<\EOF
138ignores expect80 format-patch -1 --stdout
139respects expect40 diff HEAD^ HEAD --stat
140respects expect40 show --stat
141respects expect40 log -1 --stat
142EOF
143
144cat >expect40 <<'EOF'
145 abcd | 1000 ++++++++++++++++++++++++++
146EOF
147cat >expect40-graph <<'EOF'
148| abcd | 1000 ++++++++++++++++++++++++++
149EOF
150while read verb expect cmd args
151do
152 test_expect_success "$cmd $verb statGraphWidth config" '
153 git -c diff.statGraphWidth=26 $cmd $args >output
154 grep " | " output >actual &&
155 test_cmp "$expect" actual
156 '
157
158 test "$cmd" != diff || continue
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700159
160 test_expect_success "$cmd --graph $verb statGraphWidth config" '
161 git -c diff.statGraphWidth=26 $cmd $args --graph >output
162 grep " | " output >actual &&
163 test_cmp "$expect-graph" actual
164 '
Zbigniew Jędrzejewski-Szmekc4432d52012-03-01 13:26:44 +0100165done <<\EOF
166ignores expect80 format-patch -1 --stdout
167respects expect40 diff HEAD^ HEAD --stat
168respects expect40 show --stat
169respects expect40 log -1 --stat
170EOF
171
172
Junio C Hamano31c23732012-03-01 13:26:38 +0100173cat >expect <<'EOF'
174 abcd | 1000 ++++++++++++++++++++++++++
175EOF
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700176cat >expect-graph <<'EOF'
177| abcd | 1000 ++++++++++++++++++++++++++
178EOF
Junio C Hamano31c23732012-03-01 13:26:38 +0100179while read cmd args
180do
181 test_expect_success "$cmd --stat=width with big change" '
182 git $cmd $args --stat=40 >output
183 grep " | " output >actual &&
184 test_cmp expect actual
185 '
186
187 test_expect_success "$cmd --stat-width=width with big change" '
188 git $cmd $args --stat-width=40 >output
189 grep " | " output >actual &&
190 test_cmp expect actual
191 '
Zbigniew Jędrzejewski-Szmek969fe572012-03-01 13:26:45 +0100192
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700193 test_expect_success "$cmd --stat-graph-width with big change" '
Zbigniew Jędrzejewski-Szmek969fe572012-03-01 13:26:45 +0100194 git $cmd $args --stat-graph-width=26 >output
195 grep " | " output >actual &&
196 test_cmp expect actual
197 '
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700198
199 test "$cmd" != diff || continue
200
201 test_expect_success "$cmd --stat-width=width --graph with big change" '
202 git $cmd $args --stat-width=40 --graph >output
203 grep " | " output >actual &&
204 test_cmp expect-graph actual
205 '
206
207 test_expect_success "$cmd --stat-graph-width --graph with big change" '
208 git $cmd $args --stat-graph-width=26 --graph >output
209 grep " | " output >actual &&
210 test_cmp expect-graph actual
211 '
Junio C Hamano31c23732012-03-01 13:26:38 +0100212done <<\EOF
213format-patch -1 --stdout
214diff HEAD^ HEAD --stat
215show --stat
216log -1 --stat
217EOF
218
219test_expect_success 'preparation for long filename tests' '
220 cp abcd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
221 git add aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
222 git commit -m message
223'
224
225cat >expect <<'EOF'
Zbigniew Jędrzejewski-Szmek1b058bc2012-03-01 13:26:43 +0100226 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++
Junio C Hamano31c23732012-03-01 13:26:38 +0100227EOF
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700228cat >expect-graph <<'EOF'
229| ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++
230EOF
Junio C Hamano31c23732012-03-01 13:26:38 +0100231while read cmd args
232do
Zbigniew Jędrzejewski-Szmek1b058bc2012-03-01 13:26:43 +0100233 test_expect_success "$cmd --stat=width with big change is more balanced" '
Junio C Hamano31c23732012-03-01 13:26:38 +0100234 git $cmd $args --stat-width=60 >output &&
235 grep " | " output >actual &&
236 test_cmp expect actual
237 '
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700238
239 test "$cmd" != diff || continue
240
241 test_expect_success "$cmd --stat=width --graph with big change is balanced" '
242 git $cmd $args --stat-width=60 --graph >output &&
243 grep " | " output >actual &&
244 test_cmp expect-graph actual
245 '
Junio C Hamano31c23732012-03-01 13:26:38 +0100246done <<\EOF
247format-patch -1 --stdout
248diff HEAD^ HEAD --stat
249show --stat
250log -1 --stat
251EOF
252
253cat >expect80 <<'EOF'
254 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++
255EOF
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700256cat >expect80-graph <<'EOF'
257| ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++
258EOF
Zbigniew Jędrzejewski-Szmekaf9fedc2012-03-01 13:26:39 +0100259cat >expect200 <<'EOF'
Zbigniew Jędrzejewski-Szmek1b058bc2012-03-01 13:26:43 +0100260 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Zbigniew Jędrzejewski-Szmekaf9fedc2012-03-01 13:26:39 +0100261EOF
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700262cat >expect200-graph <<'EOF'
Lucian Poston36dcc022012-04-16 03:44:52 -0700263| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700264EOF
Junio C Hamano31c23732012-03-01 13:26:38 +0100265while read verb expect cmd args
266do
267 test_expect_success "$cmd $verb COLUMNS (long filename)" '
268 COLUMNS=200 git $cmd $args >output
269 grep " | " output >actual &&
270 test_cmp "$expect" actual
271 '
Zbigniew Jędrzejewski-Szmek8c188c72012-04-16 03:44:49 -0700272
273 test "$cmd" != diff || continue
274
275 test_expect_success "$cmd --graph $verb COLUMNS (long filename)" '
276 COLUMNS=200 git $cmd $args --graph >output
277 grep " | " output >actual &&
278 test_cmp "$expect-graph" actual
279 '
Junio C Hamano31c23732012-03-01 13:26:38 +0100280done <<\EOF
281ignores expect80 format-patch -1 --stdout
Zbigniew Jędrzejewski-Szmekaf9fedc2012-03-01 13:26:39 +0100282respects expect200 diff HEAD^ HEAD --stat
Zbigniew Jędrzejewski-Szmek666c92a2012-03-01 13:26:40 +0100283respects expect200 show --stat
Zbigniew Jędrzejewski-Szmek5e0ec152012-03-01 13:26:41 +0100284respects expect200 log -1 --stat
Junio C Hamano31c23732012-03-01 13:26:38 +0100285EOF
286
Lucian Postonda791612012-04-18 14:09:33 -0700287cat >expect1 <<'EOF'
288 ...aaaaaaa | 1000 ++++++
289EOF
290cat >expect1-graph <<'EOF'
291| ...aaaaaaa | 1000 ++++++
292EOF
293while read teststate verb expect cmd args
294do
295 test_expect_$teststate "$cmd $verb prefix greater than COLUMNS (big change)" '
296 COLUMNS=1 git $cmd $args >output
297 grep " | " output >actual &&
298 test_cmp "$expect" actual
299 '
300
301 test "$cmd" != diff || continue
302
303 test_expect_$teststate "$cmd --graph $verb prefix greater than COLUMNS (big change)" '
304 COLUMNS=1 git $cmd $args --graph >output
305 grep " | " output >actual &&
306 test_cmp "$expect-graph" actual
307 '
308done <<\EOF
309success ignores expect80 format-patch -1 --stdout
310failure respects expect1 diff HEAD^ HEAD --stat
311failure respects expect1 show --stat
312failure respects expect1 log -1 --stat
313EOF
314
Junio C Hamano31c23732012-03-01 13:26:38 +0100315cat >expect <<'EOF'
Zbigniew Jędrzejewski-Szmek7a7159a2012-03-01 13:26:42 +0100316 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Junio C Hamano31c23732012-03-01 13:26:38 +0100317EOF
Zbigniew Jędrzejewski-Szmek7a7159a2012-03-01 13:26:42 +0100318test_expect_success 'merge --stat respects COLUMNS (big change)' '
Junio C Hamano31c23732012-03-01 13:26:38 +0100319 git checkout -b branch HEAD^^ &&
320 COLUMNS=100 git merge --stat --no-ff master^ >output &&
321 grep " | " output >actual
322 test_cmp expect actual
323'
324
325cat >expect <<'EOF'
Zbigniew Jędrzejewski-Szmek1b058bc2012-03-01 13:26:43 +0100326 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++
Junio C Hamano31c23732012-03-01 13:26:38 +0100327EOF
Zbigniew Jędrzejewski-Szmek7a7159a2012-03-01 13:26:42 +0100328test_expect_success 'merge --stat respects COLUMNS (long filename)' '
Junio C Hamano31c23732012-03-01 13:26:38 +0100329 COLUMNS=100 git merge --stat --no-ff master >output &&
330 grep " | " output >actual
331 test_cmp expect actual
332'
333
334test_done