]> git.ipfire.org Git - thirdparty/git.git/blame - t/t4052-stat-output.sh
Merge branch 'gc/branch-recurse-submodules-fix'
[thirdparty/git.git] / t / t4052-stat-output.sh
CommitLineData
31c2373d
JH
1#!/bin/sh
2#
3# Copyright (c) 2012 Zbigniew Jędrzejewski-Szmek
4#
5
6test_description='test --stat output of various commands'
7
8f37854b 8GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
334afbc7
JS
9export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
10
31c2373d
JH
11. ./test-lib.sh
12. "$TEST_DIRECTORY"/lib-terminal.sh
13
14# 120 character name
15name=aaaaaaaaaa
16name=$name$name$name$name$name$name$name$name$name$name$name$name
17test_expect_success 'preparation' '
18 >"$name" &&
19 git add "$name" &&
20 git commit -m message &&
21 echo a >"$name" &&
22 git commit -m message "$name"
23'
24
071dd0ba
NTND
25cat >expect72 <<-'EOF'
26 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
27EOF
28test_expect_success "format-patch: small change with long name gives more space to the name" '
29 git format-patch -1 --stdout >output &&
30 grep " | " output >actual &&
31 test_cmp expect72 actual
32'
33
31c2373d
JH
34while read cmd args
35do
071dd0ba 36 cat >expect80 <<-'EOF'
dc801e71 37 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
31c2373d 38 EOF
1b058bc3 39 test_expect_success "$cmd: small change with long name gives more space to the name" '
31c2373d
JH
40 git $cmd $args >output &&
41 grep " | " output >actual &&
071dd0ba 42 test_cmp expect80 actual
31c2373d 43 '
071dd0ba
NTND
44done <<\EOF
45diff HEAD^ HEAD --stat
46show --stat
47log -1 --stat
48EOF
31c2373d 49
284aeb7e
NTND
50cat >expect.60 <<-'EOF'
51 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
52EOF
53cat >expect.6030 <<-'EOF'
54 ...aaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
55EOF
56cat >expect2.60 <<-'EOF'
57 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
58 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
59EOF
60cat >expect2.6030 <<-'EOF'
61 ...aaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
62 ...aaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
63EOF
64while read expect cmd args
071dd0ba 65do
1b058bc3 66 test_expect_success "$cmd --stat=width: a long name is given more room when the bar is short" '
31c2373d
JH
67 git $cmd $args --stat=40 >output &&
68 grep " | " output >actual &&
284aeb7e 69 test_cmp $expect.60 actual
31c2373d
JH
70 '
71
72 test_expect_success "$cmd --stat-width=width with long name" '
73 git $cmd $args --stat-width=40 >output &&
74 grep " | " output >actual &&
284aeb7e 75 test_cmp $expect.60 actual
31c2373d
JH
76 '
77
31c2373d
JH
78 test_expect_success "$cmd --stat=...,name-width with long name" '
79 git $cmd $args --stat=60,30 >output &&
80 grep " | " output >actual &&
284aeb7e 81 test_cmp $expect.6030 actual
31c2373d
JH
82 '
83
84 test_expect_success "$cmd --stat-name-width with long name" '
85 git $cmd $args --stat-name-width=30 >output &&
86 grep " | " output >actual &&
284aeb7e 87 test_cmp $expect.6030 actual
31c2373d
JH
88 '
89done <<\EOF
284aeb7e
NTND
90expect2 format-patch --cover-letter -1 --stdout
91expect diff HEAD^ HEAD --stat
92expect show --stat
93expect log -1 --stat
31c2373d
JH
94EOF
95
96
97test_expect_success 'preparation for big change tests' '
98 >abcd &&
99 git add abcd &&
100 git commit -m message &&
101 i=0 &&
102 while test $i -lt 1000
103 do
cbe1d9d6 104 echo $i && i=$(($i + 1)) || return 1
31c2373d
JH
105 done >abcd &&
106 git commit -m message abcd
107'
108
284aeb7e
NTND
109cat >expect72 <<'EOF'
110 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
111 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
112EOF
113test_expect_success "format-patch --cover-letter ignores COLUMNS (big change)" '
114 COLUMNS=200 git format-patch -1 --stdout --cover-letter >output &&
115 grep " | " output >actual &&
116 test_cmp expect72 actual
117'
118
071dd0ba
NTND
119cat >expect72 <<'EOF'
120 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
31c2373d 121EOF
071dd0ba
NTND
122cat >expect72-graph <<'EOF'
123| abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8c188c74 124EOF
af9fedc1
ZJS
125cat >expect200 <<'EOF'
126 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
127EOF
8c188c74 128cat >expect200-graph <<'EOF'
36dcc02c 129| abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8c188c74 130EOF
31c2373d
JH
131while read verb expect cmd args
132do
133 test_expect_success "$cmd $verb COLUMNS (big change)" '
60687de5 134 COLUMNS=200 git $cmd $args >output &&
31c2373d
JH
135 grep " | " output >actual &&
136 test_cmp "$expect" actual
137 '
8c188c74 138
695985f4 139 case "$cmd" in diff|show) continue;; esac
8c188c74
ZJS
140
141 test_expect_success "$cmd --graph $verb COLUMNS (big change)" '
60687de5 142 COLUMNS=200 git $cmd $args --graph >output &&
8c188c74
ZJS
143 grep " | " output >actual &&
144 test_cmp "$expect-graph" actual
145 '
31c2373d 146done <<\EOF
071dd0ba 147ignores expect72 format-patch -1 --stdout
af9fedc1 148respects expect200 diff HEAD^ HEAD --stat
666c92a2 149respects expect200 show --stat
5e0ec15e 150respects expect200 log -1 --stat
31c2373d
JH
151EOF
152
c4432d55
ZJS
153cat >expect40 <<'EOF'
154 abcd | 1000 ++++++++++++++++++++++++++
155EOF
8c188c74 156cat >expect40-graph <<'EOF'
36dcc02c 157| abcd | 1000 ++++++++++++++++++++++++
8c188c74 158EOF
c4432d55
ZJS
159while read verb expect cmd args
160do
161 test_expect_success "$cmd $verb not enough COLUMNS (big change)" '
60687de5 162 COLUMNS=40 git $cmd $args >output &&
c4432d55
ZJS
163 grep " | " output >actual &&
164 test_cmp "$expect" actual
165 '
df44483a 166
695985f4 167 case "$cmd" in diff|show) continue;; esac
8c188c74
ZJS
168
169 test_expect_success "$cmd --graph $verb not enough COLUMNS (big change)" '
60687de5 170 COLUMNS=40 git $cmd $args --graph >output &&
8c188c74
ZJS
171 grep " | " output >actual &&
172 test_cmp "$expect-graph" actual
173 '
36dcc02c 174done <<\EOF
071dd0ba 175ignores expect72 format-patch -1 --stdout
36dcc02c
LP
176respects expect40 diff HEAD^ HEAD --stat
177respects expect40 show --stat
178respects expect40 log -1 --stat
179EOF
180
181cat >expect40 <<'EOF'
182 abcd | 1000 ++++++++++++++++++++++++++
183EOF
184cat >expect40-graph <<'EOF'
185| abcd | 1000 ++++++++++++++++++++++++++
186EOF
187while read verb expect cmd args
188do
189 test_expect_success "$cmd $verb statGraphWidth config" '
60687de5 190 git -c diff.statGraphWidth=26 $cmd $args >output &&
36dcc02c
LP
191 grep " | " output >actual &&
192 test_cmp "$expect" actual
193 '
194
695985f4 195 case "$cmd" in diff|show) continue;; esac
8c188c74
ZJS
196
197 test_expect_success "$cmd --graph $verb statGraphWidth config" '
60687de5 198 git -c diff.statGraphWidth=26 $cmd $args --graph >output &&
8c188c74
ZJS
199 grep " | " output >actual &&
200 test_cmp "$expect-graph" actual
201 '
c4432d55 202done <<\EOF
071dd0ba 203ignores expect72 format-patch -1 --stdout
c4432d55
ZJS
204respects expect40 diff HEAD^ HEAD --stat
205respects expect40 show --stat
206respects expect40 log -1 --stat
207EOF
208
209
31c2373d
JH
210cat >expect <<'EOF'
211 abcd | 1000 ++++++++++++++++++++++++++
212EOF
8c188c74
ZJS
213cat >expect-graph <<'EOF'
214| abcd | 1000 ++++++++++++++++++++++++++
215EOF
31c2373d
JH
216while read cmd args
217do
218 test_expect_success "$cmd --stat=width with big change" '
60687de5 219 git $cmd $args --stat=40 >output &&
31c2373d
JH
220 grep " | " output >actual &&
221 test_cmp expect actual
222 '
223
224 test_expect_success "$cmd --stat-width=width with big change" '
60687de5 225 git $cmd $args --stat-width=40 >output &&
31c2373d
JH
226 grep " | " output >actual &&
227 test_cmp expect actual
969fe57b
ZJS
228 '
229
8c188c74 230 test_expect_success "$cmd --stat-graph-width with big change" '
60687de5 231 git $cmd $args --stat-graph-width=26 >output &&
969fe57b
ZJS
232 grep " | " output >actual &&
233 test_cmp expect actual
31c2373d 234 '
8c188c74 235
695985f4 236 case "$cmd" in diff|show) continue;; esac
8c188c74
ZJS
237
238 test_expect_success "$cmd --stat-width=width --graph with big change" '
60687de5 239 git $cmd $args --stat-width=40 --graph >output &&
8c188c74
ZJS
240 grep " | " output >actual &&
241 test_cmp expect-graph actual
242 '
243
244 test_expect_success "$cmd --stat-graph-width --graph with big change" '
60687de5 245 git $cmd $args --stat-graph-width=26 --graph >output &&
8c188c74
ZJS
246 grep " | " output >actual &&
247 test_cmp expect-graph actual
248 '
31c2373d
JH
249done <<\EOF
250format-patch -1 --stdout
251diff HEAD^ HEAD --stat
252show --stat
253log -1 --stat
254EOF
255
256test_expect_success 'preparation for long filename tests' '
257 cp abcd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
258 git add aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
259 git commit -m message
260'
261
262cat >expect <<'EOF'
1b058bc3 263 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++
31c2373d 264EOF
8c188c74
ZJS
265cat >expect-graph <<'EOF'
266| ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++
267EOF
31c2373d
JH
268while read cmd args
269do
1b058bc3 270 test_expect_success "$cmd --stat=width with big change is more balanced" '
31c2373d
JH
271 git $cmd $args --stat-width=60 >output &&
272 grep " | " output >actual &&
273 test_cmp expect actual
274 '
8c188c74 275
695985f4 276 case "$cmd" in diff|show) continue;; esac
8c188c74
ZJS
277
278 test_expect_success "$cmd --stat=width --graph with big change is balanced" '
279 git $cmd $args --stat-width=60 --graph >output &&
280 grep " | " output >actual &&
281 test_cmp expect-graph actual
282 '
31c2373d
JH
283done <<\EOF
284format-patch -1 --stdout
285diff HEAD^ HEAD --stat
286show --stat
287log -1 --stat
288EOF
289
071dd0ba
NTND
290cat >expect72 <<'EOF'
291 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++
31c2373d 292EOF
071dd0ba
NTND
293cat >expect72-graph <<'EOF'
294| ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++
8c188c74 295EOF
af9fedc1 296cat >expect200 <<'EOF'
1b058bc3 297 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
af9fedc1 298EOF
8c188c74 299cat >expect200-graph <<'EOF'
36dcc02c 300| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8c188c74 301EOF
31c2373d
JH
302while read verb expect cmd args
303do
304 test_expect_success "$cmd $verb COLUMNS (long filename)" '
60687de5 305 COLUMNS=200 git $cmd $args >output &&
31c2373d
JH
306 grep " | " output >actual &&
307 test_cmp "$expect" actual
308 '
8c188c74 309
695985f4 310 case "$cmd" in diff|show) continue;; esac
8c188c74
ZJS
311
312 test_expect_success "$cmd --graph $verb COLUMNS (long filename)" '
60687de5 313 COLUMNS=200 git $cmd $args --graph >output &&
8c188c74
ZJS
314 grep " | " output >actual &&
315 test_cmp "$expect-graph" actual
316 '
31c2373d 317done <<\EOF
071dd0ba 318ignores expect72 format-patch -1 --stdout
af9fedc1 319respects expect200 diff HEAD^ HEAD --stat
666c92a2 320respects expect200 show --stat
5e0ec15e 321respects expect200 log -1 --stat
31c2373d
JH
322EOF
323
da79161d
LP
324cat >expect1 <<'EOF'
325 ...aaaaaaa | 1000 ++++++
326EOF
327cat >expect1-graph <<'EOF'
328| ...aaaaaaa | 1000 ++++++
329EOF
678c5741 330while read verb expect cmd args
da79161d 331do
bafa16e5
ZJS
332 test_expect_success COLUMNS_CAN_BE_1 \
333 "$cmd $verb prefix greater than COLUMNS (big change)" '
60687de5 334 COLUMNS=1 git $cmd $args >output &&
da79161d
LP
335 grep " | " output >actual &&
336 test_cmp "$expect" actual
337 '
338
695985f4 339 case "$cmd" in diff|show) continue;; esac
da79161d 340
bafa16e5
ZJS
341 test_expect_success COLUMNS_CAN_BE_1 \
342 "$cmd --graph $verb prefix greater than COLUMNS (big change)" '
60687de5 343 COLUMNS=1 git $cmd $args --graph >output &&
da79161d
LP
344 grep " | " output >actual &&
345 test_cmp "$expect-graph" actual
346 '
347done <<\EOF
071dd0ba 348ignores expect72 format-patch -1 --stdout
678c5741
LP
349respects expect1 diff HEAD^ HEAD --stat
350respects expect1 show --stat
351respects expect1 log -1 --stat
da79161d
LP
352EOF
353
31c2373d 354cat >expect <<'EOF'
7a7159ac 355 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
31c2373d 356EOF
7a7159ac 357test_expect_success 'merge --stat respects COLUMNS (big change)' '
31c2373d 358 git checkout -b branch HEAD^^ &&
8f37854b 359 COLUMNS=100 git merge --stat --no-ff main^ >output &&
60687de5 360 grep " | " output >actual &&
31c2373d
JH
361 test_cmp expect actual
362'
363
364cat >expect <<'EOF'
1b058bc3 365 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++++++++++++++++++++++++++++++++++++
31c2373d 366EOF
7a7159ac 367test_expect_success 'merge --stat respects COLUMNS (long filename)' '
8f37854b 368 COLUMNS=100 git merge --stat --no-ff main >output &&
60687de5 369 grep " | " output >actual &&
31c2373d
JH
370 test_cmp expect actual
371'
372
373test_done