refactor : --rm is ignored with stdout
`zstd` CLI has progressively moved to the policy of ignoring `--rm` command when the output is `stdout`. The primary drive is to feature a behavior more consistent with `gzip`, when `--rm` is the default, but is also ignored when output is `stdout`. Other policies are certainly possible, but would break from this `gzip` convention. The new policy was inconsistenly enforced, depending on the exact list of commands. For example, it was possible to circumvent it by using `-c --rm` in this order, which would re-establish source removal. - Update the CLI so that it necessarily catch these situations and ensure that `--rm` is always disabled when output is `stdout`. - Added a warning message in this case (for verbosity 3 `-v`). - Added an `assert()`, which controls that `--rm` is no longer active with `stdout` - Added tests, which control the behavior, even when `--rm` is added after `-c` - Removed some legacy code which where trying to apply a specific policy for the `stdout` + `--rm` case, which is no longer possible
This commit is contained in:
+8
-2
@@ -388,6 +388,14 @@ zstd -f --rm tmp
|
||||
test ! -f tmp # tmp should no longer be present
|
||||
zstd -f -d --rm tmp.zst
|
||||
test ! -f tmp.zst # tmp.zst should no longer be present
|
||||
println "test: --rm is disabled when output is stdout"
|
||||
test -f tmp
|
||||
zstd --rm tmp -c > $INTOVOID
|
||||
test -f tmp # tmp shall still be there
|
||||
zstd -f --rm tmp -c > $INTOVOID
|
||||
test -f tmp # tmp shall still be there
|
||||
zstd -f tmp -c > $INTOVOID --rm
|
||||
test -f tmp # tmp shall still be there
|
||||
println "test : should quietly not remove non-regular file"
|
||||
println hello > tmp
|
||||
zstd tmp -f -o "$DEVDEVICE" 2>tmplog > "$INTOVOID"
|
||||
@@ -450,8 +458,6 @@ cp tmp_rm3.zst tmp_rm4.zst
|
||||
echo 'Y' | zstd -d tmp_rm3.zst tmp_rm4.zst -v -o tmp_rm_out --rm
|
||||
test ! -f tmp_rm3.zst
|
||||
test ! -f tmp_rm4.zst
|
||||
echo 'yes' | zstd tmp_rm_out tmp_rm3 -c --rm && die "compressing multiple files to stdout with --rm should fail unless -f is specified"
|
||||
echo 'yes' | zstd tmp_rm_out tmp_rm3 -c --rm -v && die "compressing multiple files to stdout with --rm should fail unless -f is specified"
|
||||
println gooder > tmpexists1
|
||||
zstd tmpexists1 tmpexists -c --rm -f > $INTOVOID
|
||||
|
||||
|
||||
Reference in New Issue
Block a user