mirror of
https://github.com/ouch-org/ouch.git
synced 2025-06-07 12:05:46 +00:00
clamp , merge test
This commit is contained in:
parent
d9ffd42c8f
commit
653ff976f5
68
Cargo.lock
generated
68
Cargo.lock
generated
@ -653,6 +653,73 @@ dependencies = [
|
|||||||
"getrandom",
|
"getrandom",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606"
|
||||||
|
dependencies = [
|
||||||
|
"num-bigint",
|
||||||
|
"num-complex",
|
||||||
|
"num-integer",
|
||||||
|
"num-iter",
|
||||||
|
"num-rational",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-bigint"
|
||||||
|
version = "0.4.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-complex"
|
||||||
|
version = "0.4.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d"
|
||||||
|
dependencies = [
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-integer"
|
||||||
|
version = "0.1.45"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-iter"
|
||||||
|
version = "0.1.43"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-rational"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-bigint",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-traits"
|
name = "num-traits"
|
||||||
version = "0.2.15"
|
version = "0.2.15"
|
||||||
@ -706,6 +773,7 @@ dependencies = [
|
|||||||
"libc",
|
"libc",
|
||||||
"linked-hash-map",
|
"linked-hash-map",
|
||||||
"lzzzz",
|
"lzzzz",
|
||||||
|
"num",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"parse-display",
|
"parse-display",
|
||||||
"proptest",
|
"proptest",
|
||||||
|
@ -23,6 +23,7 @@ ignore = "0.4.20"
|
|||||||
libc = "0.2.140"
|
libc = "0.2.140"
|
||||||
linked-hash-map = "0.5.6"
|
linked-hash-map = "0.5.6"
|
||||||
lzzzz = "1.0.4"
|
lzzzz = "1.0.4"
|
||||||
|
num = "0.4.0"
|
||||||
once_cell = "1.17.1"
|
once_cell = "1.17.1"
|
||||||
rayon = "1.7.0"
|
rayon = "1.7.0"
|
||||||
same-file = "1.0.6"
|
same-file = "1.0.6"
|
||||||
|
@ -45,36 +45,36 @@ pub fn compress_files(
|
|||||||
// by default, ParCompress uses a default compression level of 3
|
// by default, ParCompress uses a default compression level of 3
|
||||||
// instead of the regular default that flate2 uses
|
// instead of the regular default that flate2 uses
|
||||||
gzp::par::compress::ParCompress::<gzp::deflate::Gzip>::builder()
|
gzp::par::compress::ParCompress::<gzp::deflate::Gzip>::builder()
|
||||||
.compression_level(level.map_or_else(Default::default, |l| {
|
.compression_level(
|
||||||
gzp::Compression::new(if l < 1 || l > 9 { 1 } else { l as u32 })
|
level.map_or_else(Default::default, |l| gzp::Compression::new(num::clamp(l as u32, 1, 9))),
|
||||||
}))
|
)
|
||||||
.from_writer(encoder),
|
.from_writer(encoder),
|
||||||
),
|
),
|
||||||
Bzip => Box::new(bzip2::write::BzEncoder::new(
|
Bzip => Box::new(bzip2::write::BzEncoder::new(
|
||||||
encoder,
|
encoder,
|
||||||
level.map_or_else(Default::default, |l| {
|
level.map_or_else(Default::default, |l| {
|
||||||
bzip2::Compression::new(if l < 1 || l > 9 { 1 } else { l as u32 })
|
bzip2::Compression::new(num::clamp(l as u32, 1, 9))
|
||||||
}),
|
}),
|
||||||
)),
|
)),
|
||||||
Lz4 => Box::new(lzzzz::lz4f::WriteCompressor::new(
|
Lz4 => Box::new(lzzzz::lz4f::WriteCompressor::new(
|
||||||
encoder,
|
encoder,
|
||||||
lzzzz::lz4f::PreferencesBuilder::new()
|
lzzzz::lz4f::PreferencesBuilder::new()
|
||||||
.compression_level(level.map_or(0, |l| if l < 1 || l > 12 { 0 } else { l as i32 }))
|
.compression_level(level.map_or(0, |l| num::clamp(l as i32, 1, 12)))
|
||||||
.build(),
|
.build(),
|
||||||
)?),
|
)?),
|
||||||
Lzma => Box::new(xz2::write::XzEncoder::new(
|
Lzma => Box::new(xz2::write::XzEncoder::new(
|
||||||
encoder,
|
encoder,
|
||||||
level.map_or(6, |l| if l < 0 || l > 9 { 6 } else { l as u32 }),
|
level.map_or(6, |l| num::clamp(l as u32, 0, 9)),
|
||||||
)),
|
)),
|
||||||
Snappy => Box::new(
|
Snappy => Box::new(
|
||||||
gzp::par::compress::ParCompress::<gzp::snap::Snap>::builder()
|
gzp::par::compress::ParCompress::<gzp::snap::Snap>::builder()
|
||||||
.compression_level(gzp::par::compress::Compression::new(
|
.compression_level(gzp::par::compress::Compression::new(
|
||||||
level.map_or_else(Default::default, |l| l as u32),
|
level.map_or_else(Default::default, |l| num::clamp(l as u32, 0, 9)),
|
||||||
))
|
))
|
||||||
.from_writer(encoder),
|
.from_writer(encoder),
|
||||||
),
|
),
|
||||||
Zstd => Box::new(
|
Zstd => Box::new(
|
||||||
zstd::stream::write::Encoder::new(encoder, level.map_or(0, |l| l as i32))
|
zstd::stream::write::Encoder::new(encoder, level.map_or(0, |l| num::clamp(l as i32, 1, 22)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.auto_finish(),
|
.auto_finish(),
|
||||||
),
|
),
|
||||||
|
@ -100,7 +100,11 @@ fn single_empty_file(ext: Extension, #[any(size_range(0..8).lift())] exts: Vec<F
|
|||||||
|
|
||||||
// compress and decompress a single file
|
// compress and decompress a single file
|
||||||
#[proptest(cases = 512)]
|
#[proptest(cases = 512)]
|
||||||
fn single_file(ext: Extension, #[any(size_range(0..8).lift())] exts: Vec<FileExtension>) {
|
fn single_file(
|
||||||
|
ext: Extension,
|
||||||
|
#[any(size_range(0..8).lift())] exts: Vec<FileExtension>,
|
||||||
|
#[strategy(0i16..30)] level: i16,
|
||||||
|
) {
|
||||||
let dir = tempdir().unwrap();
|
let dir = tempdir().unwrap();
|
||||||
let dir = dir.path();
|
let dir = dir.path();
|
||||||
let before = &dir.join("before");
|
let before = &dir.join("before");
|
||||||
@ -109,7 +113,7 @@ fn single_file(ext: Extension, #[any(size_range(0..8).lift())] exts: Vec<FileExt
|
|||||||
let archive = &dir.join(format!("file.{}", merge_extensions(ext, exts)));
|
let archive = &dir.join(format!("file.{}", merge_extensions(ext, exts)));
|
||||||
let after = &dir.join("after");
|
let after = &dir.join("after");
|
||||||
fs::write(before_file, []).unwrap();
|
fs::write(before_file, []).unwrap();
|
||||||
ouch!("-A", "c", before_file, archive);
|
ouch!("-A", "c", "-l", level.to_string(), before_file, archive);
|
||||||
ouch!("-A", "d", archive, "-d", after);
|
ouch!("-A", "d", archive, "-d", after);
|
||||||
assert_same_directory(before, after, false);
|
assert_same_directory(before, after, false);
|
||||||
}
|
}
|
||||||
@ -133,23 +137,3 @@ fn multiple_files(
|
|||||||
ouch!("-A", "d", archive, "-d", after);
|
ouch!("-A", "d", archive, "-d", after);
|
||||||
assert_same_directory(before, after, !matches!(ext, DirectoryExtension::Zip));
|
assert_same_directory(before, after, !matches!(ext, DirectoryExtension::Zip));
|
||||||
}
|
}
|
||||||
|
|
||||||
// compress and decompress a single file with comp levels
|
|
||||||
#[proptest(cases = 512)]
|
|
||||||
fn single_file_level(
|
|
||||||
ext: Extension,
|
|
||||||
#[any(size_range(0..8).lift())] exts: Vec<FileExtension>,
|
|
||||||
#[strategy(0i16..30)] level: i16,
|
|
||||||
) {
|
|
||||||
let dir = tempdir().unwrap();
|
|
||||||
let dir = dir.path();
|
|
||||||
let before = &dir.join("before");
|
|
||||||
fs::create_dir(before).unwrap();
|
|
||||||
let before_file = &before.join("file");
|
|
||||||
let archive = &dir.join(format!("file.{}", merge_extensions(ext, exts)));
|
|
||||||
let after = &dir.join("after");
|
|
||||||
fs::write(before_file, []).unwrap();
|
|
||||||
ouch!("-A", "c", "-l", level.to_string(), before_file, archive);
|
|
||||||
ouch!("-A", "d", archive, "-d", after);
|
|
||||||
assert_same_directory(before, after, false);
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user