From af47c66a00c0912e58d346cd3a26896a8db075c1 Mon Sep 17 00:00:00 2001 From: Michael Debertol Date: Sun, 1 Aug 2021 17:12:35 +0200 Subject: [PATCH] sort: improve tests --- src/uu/sort/src/check.rs | 8 +++++++- tests/by-util/test_sort.rs | 27 ++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/uu/sort/src/check.rs b/src/uu/sort/src/check.rs index 350a98e23..d82565c3d 100644 --- a/src/uu/sort/src/check.rs +++ b/src/uu/sort/src/check.rs @@ -42,7 +42,13 @@ pub fn check(path: &OsStr, settings: &GlobalSettings) -> i32 { move || reader(file, recycled_receiver, loaded_sender, &settings) }); for _ in 0..2 { - let _ = recycled_sender.send(RecycledChunk::new(100 * 1024)); + let _ = recycled_sender.send(RecycledChunk::new(if settings.buffer_size < 100 * 1024 { + // when the buffer size is smaller than 100KiB we choose it instead of the default. + // this improves testability. + settings.buffer_size + } else { + 100 * 1024 + })); } let mut prev_chunk: Option = None; diff --git a/tests/by-util/test_sort.rs b/tests/by-util/test_sort.rs index 838eb4f98..cac9a5a5d 100644 --- a/tests/by-util/test_sort.rs +++ b/tests/by-util/test_sort.rs @@ -771,6 +771,7 @@ fn test_check() { new_ucmd!() .arg(diagnose_arg) .arg("check_fail.txt") + .arg("--buffer-size=10b") .fails() .stderr_only("sort: check_fail.txt:6: disorder: 5\n"); @@ -892,6 +893,29 @@ fn test_compress() { .stdout_only_fixture("ext_sort.expected"); } +#[test] +#[cfg(target_os = "linux")] +fn test_compress_merge() { + new_ucmd!() + .args(&[ + "--compress-program", + "gzip", + "-S", + "10", + "--batch-size=2", + "-m", + "--unique", + "merge_ints_interleaved_1.txt", + "merge_ints_interleaved_2.txt", + "merge_ints_interleaved_3.txt", + "merge_ints_interleaved_3.txt", + "merge_ints_interleaved_2.txt", + "merge_ints_interleaved_1.txt", + ]) + .succeeds() + .stdout_only_fixture("merge_ints_interleaved.expected"); +} + #[test] fn test_compress_fail() { TestScenario::new(util_name!()) @@ -1027,7 +1051,8 @@ fn test_output_is_input() { let (at, mut cmd) = at_and_ucmd!(); at.touch("file"); at.append("file", input); - cmd.args(&["-m", "-o", "file", "file"]).succeeds(); + cmd.args(&["-m", "-u", "-o", "file", "file", "file", "file"]) + .succeeds(); assert_eq!(at.read("file"), input); }