mirror of
https://github.com/facebook/zstd.git
synced 2025-07-30 22:23:13 +03:00
Refactor progress bar & summary line logic
* Centralize the logic about whether to print the progress bar or not in the `*_PROGRESS()` macros. * Centralize the logc about whether to print the summary line or not in `FIO_shouldDisplayFileSummary()` and `FIO_shouldDisplayMultipleFileSummary()`. * Make `--progress` work for non-zstd (de)compressors. * Clean up several edge cases in compression and decompression progress printing along the way. E.g. wrong log level, or missing summary line. One thing I don't like about stdout mode, which sets the display level to 1, is that warnings aren't displayed. After this PR, we could change stdout mode from lowering the display level, to defaulting to implied `--no-progress`. But, I think that deserves a separate PR.
This commit is contained in:
committed by
Nick Terrell
parent
e58a39f84e
commit
fbff7827fa
46
tests/cli-tests/progress/no-progress.sh
Executable file
46
tests/cli-tests/progress/no-progress.sh
Executable file
@ -0,0 +1,46 @@
|
||||
#!/bin/sh
|
||||
|
||||
#!/bin/sh
|
||||
|
||||
. "$COMMON/platform.sh"
|
||||
|
||||
set -e
|
||||
|
||||
echo hello > hello
|
||||
echo world > world
|
||||
|
||||
zstd -q hello world
|
||||
|
||||
println >&2 "Tests cases where progress information should not be printed"
|
||||
|
||||
for args in \
|
||||
"" \
|
||||
"--fake-stderr-is-console -q" \
|
||||
"--fake-stderr-is-console -qq --progress" \
|
||||
"--no-progress --fake-stderr-is-console" \
|
||||
"--no-progress --fake-stderr-is-console -v"
|
||||
do
|
||||
println >&2 "args = $args"
|
||||
println >&2 "compress file to file"
|
||||
zstd $args -f hello
|
||||
println >&2 "compress pipe to pipe"
|
||||
zstd $args < hello > $INTOVOID
|
||||
println >&2 "compress pipe to file"
|
||||
zstd $args < hello -fo hello.zst
|
||||
println >&2 "compress file to pipe"
|
||||
zstd $args hello -c > $INTOVOID
|
||||
println >&2 "compress 2 files"
|
||||
zstd $args -f hello world
|
||||
|
||||
println >&2 "decompress file to file"
|
||||
zstd $args -d -f hello.zst
|
||||
println >&2 "decompress pipe to pipe"
|
||||
zstd $args -d < hello.zst > $INTOVOID
|
||||
println >&2 "decompress pipe to file"
|
||||
zstd $args -d < hello.zst -fo hello
|
||||
println >&2 "decompress file to pipe"
|
||||
zstd $args -d hello.zst -c > $INTOVOID
|
||||
println >&2 "decompress 2 files"
|
||||
zstd $args -d -f hello.zst world.zst
|
||||
println >&2 ""
|
||||
done
|
90
tests/cli-tests/progress/no-progress.sh.stderr.glob
Normal file
90
tests/cli-tests/progress/no-progress.sh.stderr.glob
Normal file
@ -0,0 +1,90 @@
|
||||
Tests cases where progress information should not be printed
|
||||
args =
|
||||
compress file to file
|
||||
compress pipe to pipe
|
||||
compress pipe to file
|
||||
compress file to pipe
|
||||
compress 2 files
|
||||
decompress file to file
|
||||
decompress pipe to pipe
|
||||
decompress pipe to file
|
||||
decompress file to pipe
|
||||
decompress 2 files
|
||||
|
||||
args = --fake-stderr-is-console -q
|
||||
compress file to file
|
||||
compress pipe to pipe
|
||||
compress pipe to file
|
||||
compress file to pipe
|
||||
compress 2 files
|
||||
decompress file to file
|
||||
decompress pipe to pipe
|
||||
decompress pipe to file
|
||||
decompress file to pipe
|
||||
decompress 2 files
|
||||
|
||||
args = --fake-stderr-is-console -qq --progress
|
||||
compress file to file
|
||||
compress pipe to pipe
|
||||
compress pipe to file
|
||||
compress file to pipe
|
||||
compress 2 files
|
||||
decompress file to file
|
||||
decompress pipe to pipe
|
||||
decompress pipe to file
|
||||
decompress file to pipe
|
||||
decompress 2 files
|
||||
|
||||
args = --no-progress --fake-stderr-is-console
|
||||
compress file to file
|
||||
hello*hello.zst*
|
||||
compress pipe to pipe
|
||||
compress pipe to file
|
||||
*stdin*hello.zst*
|
||||
compress file to pipe
|
||||
compress 2 files
|
||||
2 files compressed*
|
||||
decompress file to file
|
||||
hello.zst*
|
||||
decompress pipe to pipe
|
||||
decompress pipe to file
|
||||
*stdin*
|
||||
decompress file to pipe
|
||||
decompress 2 files
|
||||
2 files decompressed*
|
||||
|
||||
args = --no-progress --fake-stderr-is-console -v
|
||||
compress file to file
|
||||
*zstd*
|
||||
hello*hello.zst*
|
||||
compress pipe to pipe
|
||||
*zstd*
|
||||
*stdin*stdout*
|
||||
compress pipe to file
|
||||
*zstd*
|
||||
*stdin*hello.zst*
|
||||
compress file to pipe
|
||||
*zstd*
|
||||
*hello*stdout*
|
||||
compress 2 files
|
||||
*zstd*
|
||||
*hello*hello.zst*
|
||||
*world*world.zst*
|
||||
2 files compressed*
|
||||
decompress file to file
|
||||
*zstd*
|
||||
hello.zst*
|
||||
decompress pipe to pipe
|
||||
*zstd*
|
||||
*stdin*
|
||||
decompress pipe to file
|
||||
*zstd*
|
||||
*stdin*
|
||||
decompress file to pipe
|
||||
*zstd*
|
||||
hello.zst*
|
||||
decompress 2 files
|
||||
*zstd*
|
||||
hello.zst*
|
||||
world.zst*
|
||||
2 files decompressed*
|
41
tests/cli-tests/progress/progress.sh
Executable file
41
tests/cli-tests/progress/progress.sh
Executable file
@ -0,0 +1,41 @@
|
||||
#!/bin/sh
|
||||
|
||||
. "$COMMON/platform.sh"
|
||||
|
||||
set -e
|
||||
|
||||
println >&2 "Tests cases where progress information should be printed"
|
||||
|
||||
echo hello > hello
|
||||
echo world > world
|
||||
|
||||
zstd -q hello world
|
||||
|
||||
for args in \
|
||||
"--progress" \
|
||||
"--fake-stderr-is-console" \
|
||||
"--progress --fake-stderr-is-console -q"; do
|
||||
println >&2 "args = $args"
|
||||
println >&2 "compress file to file"
|
||||
zstd $args -f hello
|
||||
println >&2 "compress pipe to pipe"
|
||||
zstd $args < hello > $INTOVOID
|
||||
println >&2 "compress pipe to file"
|
||||
zstd $args < hello -fo hello.zst
|
||||
println >&2 "compress file to pipe"
|
||||
zstd $args hello -c > $INTOVOID
|
||||
println >&2 "compress 2 files"
|
||||
zstd $args -f hello world
|
||||
|
||||
println >&2 "decompress file to file"
|
||||
zstd $args -d -f hello.zst
|
||||
println >&2 "decompress pipe to pipe"
|
||||
zstd $args -d < hello.zst > $INTOVOID
|
||||
println >&2 "decompress pipe to file"
|
||||
zstd $args -d < hello.zst -fo hello
|
||||
println >&2 "decompress file to pipe"
|
||||
zstd $args -d hello.zst -c > $INTOVOID
|
||||
println >&2 "decompress 2 files"
|
||||
zstd $args -d -f hello.zst world.zst
|
||||
println >&2 ""
|
||||
done
|
62
tests/cli-tests/progress/progress.sh.stderr.glob
Normal file
62
tests/cli-tests/progress/progress.sh.stderr.glob
Normal file
@ -0,0 +1,62 @@
|
||||
Tests cases where progress information should be printed
|
||||
args = --progress
|
||||
compress file to file
|
||||
*Read:*hello*hello.zst*
|
||||
compress pipe to pipe
|
||||
*Read:*stdin*stdout*
|
||||
compress pipe to file
|
||||
*Read:*stdin*hello.zst*
|
||||
compress file to pipe
|
||||
*Read:*hello*stdout*
|
||||
compress 2 files
|
||||
*Read*2 files compressed*
|
||||
decompress file to file
|
||||
*hello.zst*hello.zst*
|
||||
decompress pipe to pipe
|
||||
*stdin*stdin*
|
||||
decompress pipe to file
|
||||
*stdin*stdin*
|
||||
decompress file to pipe
|
||||
*hello.zst*hello.zst*
|
||||
decompress 2 files
|
||||
*hello.zst*2 files decompressed*
|
||||
|
||||
args = --fake-stderr-is-console
|
||||
compress file to file
|
||||
*Read:*hello*hello.zst*
|
||||
compress pipe to pipe
|
||||
compress pipe to file
|
||||
*Read:*stdin*hello.zst*
|
||||
compress file to pipe
|
||||
compress 2 files
|
||||
*Read*2 files compressed*
|
||||
decompress file to file
|
||||
*hello.zst*hello.zst*
|
||||
decompress pipe to pipe
|
||||
decompress pipe to file
|
||||
*stdin*stdin*
|
||||
decompress file to pipe
|
||||
decompress 2 files
|
||||
*hello.zst*2 files decompressed*
|
||||
|
||||
args = --progress --fake-stderr-is-console -q
|
||||
compress file to file
|
||||
*Read:*hello*hello.zst*
|
||||
compress pipe to pipe
|
||||
*Read:*stdin*stdout*
|
||||
compress pipe to file
|
||||
*Read:*stdin*hello.zst*
|
||||
compress file to pipe
|
||||
*Read:*hello*stdout*
|
||||
compress 2 files
|
||||
*Read*2 files compressed*
|
||||
decompress file to file
|
||||
*hello.zst*hello.zst*
|
||||
decompress pipe to pipe
|
||||
*stdin*stdin*
|
||||
decompress pipe to file
|
||||
*stdin*stdin*
|
||||
decompress file to pipe
|
||||
*hello.zst*hello.zst*
|
||||
decompress 2 files
|
||||
*hello.zst*2 files decompressed*
|
Reference in New Issue
Block a user