Merge branch 'js/commit-graph-warning'
[git/debian.git] / t / t0500-progress-display.sh
blob22058b503ac78c41f542eb02a5a3dbd1cb200d3e
1 #!/bin/sh
3 test_description='progress display'
5 . ./test-lib.sh
7 show_cr () {
8 tr '\015' Q | sed -e "s/Q/<CR>\\$LF/g"
11 test_expect_success 'simple progress display' '
12 cat >expect <<-\EOF &&
13 Working hard: 1<CR>
14 Working hard: 2<CR>
15 Working hard: 5<CR>
16 Working hard: 5, done.
17 EOF
19 cat >in <<-\EOF &&
20 update
21 progress 1
22 update
23 progress 2
24 progress 3
25 progress 4
26 update
27 progress 5
28 EOF
29 test-tool progress "Working hard" <in 2>stderr &&
31 show_cr <stderr >out &&
32 test_cmp expect out
35 test_expect_success 'progress display with total' '
36 cat >expect <<-\EOF &&
37 Working hard: 33% (1/3)<CR>
38 Working hard: 66% (2/3)<CR>
39 Working hard: 100% (3/3)<CR>
40 Working hard: 100% (3/3), done.
41 EOF
43 cat >in <<-\EOF &&
44 progress 1
45 progress 2
46 progress 3
47 EOF
48 test-tool progress --total=3 "Working hard" <in 2>stderr &&
50 show_cr <stderr >out &&
51 test_cmp expect out
54 test_expect_success 'progress display breaks long lines #1' '
55 sed -e "s/Z$//" >expect <<\EOF &&
56 Working hard.......2.........3.........4.........5.........6: 0% (100/100000)<CR>
57 Working hard.......2.........3.........4.........5.........6: 1% (1000/100000)<CR>
58 Working hard.......2.........3.........4.........5.........6: Z
59 10% (10000/100000)<CR>
60 100% (100000/100000)<CR>
61 100% (100000/100000), done.
62 EOF
64 cat >in <<-\EOF &&
65 progress 100
66 progress 1000
67 progress 10000
68 progress 100000
69 EOF
70 test-tool progress --total=100000 \
71 "Working hard.......2.........3.........4.........5.........6" \
72 <in 2>stderr &&
74 show_cr <stderr >out &&
75 test_cmp expect out
78 test_expect_success 'progress display breaks long lines #2' '
79 # Note: we do not need that many spaces after the title to cover up
80 # the last line before breaking the progress line.
81 sed -e "s/Z$//" >expect <<\EOF &&
82 Working hard.......2.........3.........4.........5.........6: 0% (1/100000)<CR>
83 Working hard.......2.........3.........4.........5.........6: 0% (2/100000)<CR>
84 Working hard.......2.........3.........4.........5.........6: Z
85 10% (10000/100000)<CR>
86 100% (100000/100000)<CR>
87 100% (100000/100000), done.
88 EOF
90 cat >in <<-\EOF &&
91 update
92 progress 1
93 update
94 progress 2
95 progress 10000
96 progress 100000
97 EOF
98 test-tool progress --total=100000 \
99 "Working hard.......2.........3.........4.........5.........6" \
100 <in 2>stderr &&
102 show_cr <stderr >out &&
103 test_cmp expect out
106 test_expect_success 'progress display breaks long lines #3 - even the first is too long' '
107 # Note: we do not actually need any spaces at the end of the title
108 # line, because there is no previous progress line to cover up.
109 sed -e "s/Z$//" >expect <<\EOF &&
110 Working hard.......2.........3.........4.........5.........6: Z
111 25% (25000/100000)<CR>
112 50% (50000/100000)<CR>
113 75% (75000/100000)<CR>
114 100% (100000/100000)<CR>
115 100% (100000/100000), done.
118 cat >in <<-\EOF &&
119 progress 25000
120 progress 50000
121 progress 75000
122 progress 100000
124 test-tool progress --total=100000 \
125 "Working hard.......2.........3.........4.........5.........6" \
126 <in 2>stderr &&
128 show_cr <stderr >out &&
129 test_cmp expect out
132 test_expect_success 'progress display breaks long lines #4 - title line matches terminal width' '
133 cat >expect <<\EOF &&
134 Working hard.......2.........3.........4.........5.........6.........7.........:
135 25% (25000/100000)<CR>
136 50% (50000/100000)<CR>
137 75% (75000/100000)<CR>
138 100% (100000/100000)<CR>
139 100% (100000/100000), done.
142 cat >in <<-\EOF &&
143 progress 25000
144 progress 50000
145 progress 75000
146 progress 100000
148 test-tool progress --total=100000 \
149 "Working hard.......2.........3.........4.........5.........6.........7........." \
150 <in 2>stderr &&
152 show_cr <stderr >out &&
153 test_cmp expect out
156 # Progress counter goes backwards, this should not happen in practice.
157 test_expect_success 'progress shortens - crazy caller' '
158 cat >expect <<-\EOF &&
159 Working hard: 10% (100/1000)<CR>
160 Working hard: 20% (200/1000)<CR>
161 Working hard: 0% (1/1000) <CR>
162 Working hard: 100% (1000/1000)<CR>
163 Working hard: 100% (1000/1000), done.
166 cat >in <<-\EOF &&
167 progress 100
168 progress 200
169 progress 1
170 progress 1000
172 test-tool progress --total=1000 "Working hard" <in 2>stderr &&
174 show_cr <stderr >out &&
175 test_cmp expect out
178 test_expect_success 'progress display with throughput' '
179 cat >expect <<-\EOF &&
180 Working hard: 10<CR>
181 Working hard: 20, 200.00 KiB | 100.00 KiB/s<CR>
182 Working hard: 30, 300.00 KiB | 100.00 KiB/s<CR>
183 Working hard: 40, 400.00 KiB | 100.00 KiB/s<CR>
184 Working hard: 40, 400.00 KiB | 100.00 KiB/s, done.
187 cat >in <<-\EOF &&
188 throughput 102400 1000
189 update
190 progress 10
191 throughput 204800 2000
192 update
193 progress 20
194 throughput 307200 3000
195 update
196 progress 30
197 throughput 409600 4000
198 update
199 progress 40
201 test-tool progress "Working hard" <in 2>stderr &&
203 show_cr <stderr >out &&
204 test_cmp expect out
207 test_expect_success 'progress display with throughput and total' '
208 cat >expect <<-\EOF &&
209 Working hard: 25% (10/40)<CR>
210 Working hard: 50% (20/40), 200.00 KiB | 100.00 KiB/s<CR>
211 Working hard: 75% (30/40), 300.00 KiB | 100.00 KiB/s<CR>
212 Working hard: 100% (40/40), 400.00 KiB | 100.00 KiB/s<CR>
213 Working hard: 100% (40/40), 400.00 KiB | 100.00 KiB/s, done.
216 cat >in <<-\EOF &&
217 throughput 102400 1000
218 progress 10
219 throughput 204800 2000
220 progress 20
221 throughput 307200 3000
222 progress 30
223 throughput 409600 4000
224 progress 40
226 test-tool progress --total=40 "Working hard" <in 2>stderr &&
228 show_cr <stderr >out &&
229 test_cmp expect out
232 test_expect_success 'cover up after throughput shortens' '
233 cat >expect <<-\EOF &&
234 Working hard: 1<CR>
235 Working hard: 2, 800.00 KiB | 400.00 KiB/s<CR>
236 Working hard: 3, 1.17 MiB | 400.00 KiB/s <CR>
237 Working hard: 4, 1.56 MiB | 400.00 KiB/s<CR>
238 Working hard: 4, 1.56 MiB | 400.00 KiB/s, done.
241 cat >in <<-\EOF &&
242 throughput 409600 1000
243 update
244 progress 1
245 throughput 819200 2000
246 update
247 progress 2
248 throughput 1228800 3000
249 update
250 progress 3
251 throughput 1638400 4000
252 update
253 progress 4
255 test-tool progress "Working hard" <in 2>stderr &&
257 show_cr <stderr >out &&
258 test_cmp expect out
261 test_expect_success 'cover up after throughput shortens a lot' '
262 cat >expect <<-\EOF &&
263 Working hard: 1<CR>
264 Working hard: 2, 1000.00 KiB | 1000.00 KiB/s<CR>
265 Working hard: 3, 3.00 MiB | 1.50 MiB/s <CR>
266 Working hard: 3, 3.00 MiB | 1024.00 KiB/s, done.
269 cat >in <<-\EOF &&
270 throughput 1 1000
271 update
272 progress 1
273 throughput 1024000 2000
274 update
275 progress 2
276 throughput 3145728 3000
277 update
278 progress 3
280 test-tool progress "Working hard" <in 2>stderr &&
282 show_cr <stderr >out &&
283 test_cmp expect out
286 test_expect_success 'progress generates traces' '
287 cat >in <<-\EOF &&
288 throughput 102400 1000
289 update
290 progress 10
291 throughput 204800 2000
292 update
293 progress 20
294 throughput 307200 3000
295 update
296 progress 30
297 throughput 409600 4000
298 update
299 progress 40
302 GIT_TRACE2_EVENT="$(pwd)/trace.event" test-tool progress --total=40 \
303 "Working hard" <in 2>stderr &&
305 # t0212/parse_events.perl intentionally omits regions and data.
306 test_region progress "Working hard" trace.event &&
307 grep "\"key\":\"total_objects\",\"value\":\"40\"" trace.event &&
308 grep "\"key\":\"total_bytes\",\"value\":\"409600\"" trace.event
311 test_done