3 # Copyright (c) 2012 Zbigniew Jędrzejewski-Szmek
6 test_description='test --stat output of various commands'
9 . "$TEST_DIRECTORY"/lib-terminal.sh
13 name=$name$name$name$name$name$name$name$name$name$name$name$name
14 test_expect_success 'preparation' '
17 git commit -m message &&
19 git commit -m message "$name"
25 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
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
34 ...aaaaaaaaaaaaaaaaaaaaaa | 1 +
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
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
49 ...aaaaaaaaaaaaaaaaaaaaaaaaaaa | 1 +
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
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
63 format-patch -1 --stdout
64 diff HEAD^ HEAD --stat
70 test_expect_success 'preparation for big change tests' '
73 git commit -m message &&
75 while test $i -lt 1000
77 echo $i && i=$(($i + 1))
79 git commit -m message abcd
83 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
86 cat >expect200 <<'EOF'
87 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
90 while read verb expect cmd args
92 test_expect_success "$cmd $verb COLUMNS (big change)" '
93 COLUMNS=200 git $cmd $args >output
94 grep " | " output >actual &&
95 test_cmp "$expect" actual
98 ignores expect80 format-patch -1 --stdout
99 respects expect200 diff HEAD^ HEAD --stat
100 respects expect200 show --stat
101 ignores expect80 log -1 --stat
105 abcd | 1000 ++++++++++++++++++++++++++
109 test_expect_success "$cmd --stat=width with big change" '
110 git $cmd $args --stat=40 >output
111 grep " | " output >actual &&
112 test_cmp expect actual
115 test_expect_success "$cmd --stat-width=width with big change" '
116 git $cmd $args --stat-width=40 >output
117 grep " | " output >actual &&
118 test_cmp expect actual
121 format-patch -1 --stdout
122 diff HEAD^ HEAD --stat
127 test_expect_success 'preparation for long filename tests' '
128 cp abcd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
129 git add aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
130 git commit -m message
134 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 +++++
138 test_expect_success "$cmd --stat=width with big change and long name favors name part" '
139 git $cmd $args --stat-width=60 >output &&
140 grep " | " output >actual &&
141 test_cmp expect actual
144 format-patch -1 --stdout
145 diff HEAD^ HEAD --stat
150 cat >expect80 <<'EOF'
151 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++
153 cat >expect200 <<'EOF'
154 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
156 while read verb expect cmd args
158 test_expect_success "$cmd $verb COLUMNS (long filename)" '
159 COLUMNS=200 git $cmd $args >output
160 grep " | " output >actual &&
161 test_cmp "$expect" actual
164 ignores expect80 format-patch -1 --stdout
165 respects expect200 diff HEAD^ HEAD --stat
166 respects expect200 show --stat
167 ignores expect80 log -1 --stat
171 abcd | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
173 test_expect_success 'merge --stat ignores COLUMNS (big change)' '
174 git checkout -b branch HEAD^^ &&
175 COLUMNS=100 git merge --stat --no-ff master^ >output &&
176 grep " | " output >actual
177 test_cmp expect actual
181 ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 1000 ++++++++++++++++++++
183 test_expect_success 'merge --stat ignores COLUMNS (long filename)' '
184 COLUMNS=100 git merge --stat --no-ff master >output &&
185 grep " | " output >actual
186 test_cmp expect actual