f766c4768227b94077c786a5403498bd25c2d18e
1#!/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'
25 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
26 EOF
27 test_expect_success "$cmd: a short graph bar does not extend to the full width" '
28 git $cmd $args >output &&
29 grep " | " output >actual &&
30 test_cmp expect actual
31 '
32
33 cat >expect <<-'EOF'
34 ...aaaaaaaaaaaaaaaaaaaaaa | 1 +
35 EOF
36 test_expect_success "$cmd --stat=width: name is chopped to leave room to the right of a short bar" '
37 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
85
86while read verb expect cmd args
87do
88 test_expect_success "$cmd $verb COLUMNS (big change)" '
89 COLUMNS=200 git $cmd $args >output
90 grep " | " output >actual &&
91 test_cmp "$expect" actual
92 '
93done <<\EOF
94ignores expect80 format-patch -1 --stdout
95ignores expect80 diff HEAD^ HEAD --stat
96ignores expect80 show --stat
97ignores expect80 log -1 --stat
98EOF
99
100cat >expect <<'EOF'
101 abcd | 1000 ++++++++++++++++++++++++++
102EOF
103while read cmd args
104do
105 test_expect_success "$cmd --stat=width with big change" '
106 git $cmd $args --stat=40 >output
107 grep " | " output >actual &&
108 test_cmp expect actual
109 '
110
111 test_expect_success "$cmd --stat-width=width with big change" '
112 git $cmd $args --stat-width=40 >output
113 grep " | " output >actual &&
114 test_cmp expect actual
115 '
116done <<\EOF
117format-patch -1 --stdout
118diff HEAD^ HEAD --stat
119show --stat
120log -1 --stat
121EOF
122
123test_expect_success 'preparation for long filename tests' '
124 cp abcd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
125 git add aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
126 git commit -m message
127'
128
129cat >expect <<'EOF'
130 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++
131EOF
132while read cmd args
133do
134 test_expect_success "$cmd --stat=width with big change and long name favors name part" '
135 git $cmd $args --stat-width=60 >output &&
136 grep " | " output >actual &&
137 test_cmp expect actual
138 '
139done <<\EOF
140format-patch -1 --stdout
141diff HEAD^ HEAD --stat
142show --stat
143log -1 --stat
144EOF
145
146cat >expect80 <<'EOF'
147 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++
148EOF
149while read verb expect cmd args
150do
151 test_expect_success "$cmd $verb COLUMNS (long filename)" '
152 COLUMNS=200 git $cmd $args >output
153 grep " | " output >actual &&
154 test_cmp "$expect" actual
155 '
156done <<\EOF
157ignores expect80 format-patch -1 --stdout
158ignores expect80 diff HEAD^ HEAD --stat
159ignores expect80 show --stat
160ignores expect80 log -1 --stat
161EOF
162
163cat >expect <<'EOF'
164 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
165EOF
166test_expect_success 'merge --stat ignores COLUMNS (big change)' '
167 git checkout -b branch HEAD^^ &&
168 COLUMNS=100 git merge --stat --no-ff master^ >output &&
169 grep " | " output >actual
170 test_cmp expect actual
171'
172
173cat >expect <<'EOF'
174 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++
175EOF
176test_expect_success 'merge --stat ignores COLUMNS (long filename)' '
177 COLUMNS=100 git merge --stat --no-ff master >output &&
178 grep " | " output >actual
179 test_cmp expect actual
180'
181
182test_done