3 test_description='progress display'
8 tr '\015' Q | sed -e "s/Q/<CR>\\$LF/g"
11 test_expect_success 'simple progress display' '
12 cat >expect <<-\EOF &&
16 Working hard: 5, done.
29 test-tool progress "Working hard" <in 2>stderr &&
31 show_cr <stderr >out &&
32 test_i18ncmp 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.
48 test-tool progress --total=3 "Working hard" <in 2>stderr &&
50 show_cr <stderr >out &&
51 test_i18ncmp 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.
70 test-tool progress --total=100000 \
71 "Working hard.......2.........3.........4.........5.........6" \
74 show_cr <stderr >out &&
75 test_i18ncmp 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.
98 test-tool progress --total=100000 \
99 "Working hard.......2.........3.........4.........5.........6" \
102 show_cr <stderr >out &&
103 test_i18ncmp 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.
124 test-tool progress --total=100000 \
125 "Working hard.......2.........3.........4.........5.........6" \
128 show_cr <stderr >out &&
129 test_i18ncmp 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.
148 test-tool progress --total=100000 \
149 "Working hard.......2.........3.........4.........5.........6.........7........." \
152 show_cr <stderr >out &&
153 test_i18ncmp 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.
172 test-tool progress --total=1000 "Working hard" <in 2>stderr &&
174 show_cr <stderr >out &&
175 test_i18ncmp expect out
178 test_expect_success 'progress display with throughput' '
179 cat >expect <<-\EOF &&
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.
188 throughput 102400 1000
191 throughput 204800 2000
194 throughput 307200 3000
197 throughput 409600 4000
201 test-tool progress "Working hard" <in 2>stderr &&
203 show_cr <stderr >out &&
204 test_i18ncmp 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.
217 throughput 102400 1000
219 throughput 204800 2000
221 throughput 307200 3000
223 throughput 409600 4000
226 test-tool progress --total=40 "Working hard" <in 2>stderr &&
228 show_cr <stderr >out &&
229 test_i18ncmp expect out
232 test_expect_success 'cover up after throughput shortens' '
233 cat >expect <<-\EOF &&
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.
242 throughput 409600 1000
245 throughput 819200 2000
248 throughput 1228800 3000
251 throughput 1638400 4000
255 test-tool progress "Working hard" <in 2>stderr &&
257 show_cr <stderr >out &&
258 test_i18ncmp expect out
261 test_expect_success 'cover up after throughput shortens a lot' '
262 cat >expect <<-\EOF &&
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.
273 throughput 1024000 2000
276 throughput 3145728 3000
280 test-tool progress "Working hard" <in 2>stderr &&
282 show_cr <stderr >out &&
283 test_i18ncmp expect out
286 test_expect_success 'progress generates traces' '
288 throughput 102400 1000
291 throughput 204800 2000
294 throughput 307200 3000
297 throughput 409600 4000
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