1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-08-01 13:37:48 +00:00

du/sort/od/stdbuf: make error handling of SIZE/BYTES/MODE arguments more consistent

* od: add stderr info for not yet implemented '--strings' flag
This commit is contained in:
Jan Scheer 2021-06-03 21:00:03 +02:00
parent ad26b7a042
commit db3ee61742
9 changed files with 153 additions and 93 deletions

View file

@ -80,7 +80,7 @@ fn test_du_invalid_size() {
.arg("/tmp")
.fails()
.code_is(1)
.stderr_only("du: invalid suffix in --block-size argument '1fb4t'");
.stderr_only("du: invalid --block-size argument '1fb4t'");
#[cfg(not(target_pointer_width = "128"))]
new_ucmd!()
.arg("--block-size=1Y")

View file

@ -804,3 +804,37 @@ fn test_traditional_only_label() {
",
));
}
#[test]
fn test_od_invalid_bytes() {
const INVALID_SIZE: &str = "1fb4t";
const BIG_SIZE: &str = "1Y";
let input: [u8; 8] = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
let options = [
"--read-bytes",
"--skip-bytes",
"--width",
// "--strings", // TODO: consider testing here once '--strings' is implemented
];
for option in &options {
new_ucmd!()
.arg(format!("{}={}", option, INVALID_SIZE))
.run_piped_stdin(&input[..])
.failure()
.code_is(1)
.stderr_only(format!(
"od: invalid {} argument '{}'",
option, INVALID_SIZE
));
#[cfg(not(target_pointer_width = "128"))]
new_ucmd!()
.arg(format!("{}={}", option, BIG_SIZE))
.run_piped_stdin(&input[..])
.failure()
.code_is(1)
.stderr_only(format!("od: {} argument '{}' too large", option, BIG_SIZE));
}
}

View file

@ -57,7 +57,7 @@ fn test_invalid_buffer_size() {
.fails()
.code_is(2)
.stderr_only(format!(
"sort: invalid -S argument '{}'",
"sort: invalid --buffer-size argument '{}'",
invalid_buffer_size
));
}
@ -69,7 +69,7 @@ fn test_invalid_buffer_size() {
.arg("ext_sort.txt")
.fails()
.code_is(2)
.stderr_only("sort: -S argument '1Y' too large");
.stderr_only("sort: --buffer-size argument '1Y' too large");
#[cfg(target_pointer_width = "32")]
{
@ -82,7 +82,10 @@ fn test_invalid_buffer_size() {
.arg("ext_sort.txt")
.fails()
.code_is(2)
.stderr_only(format!("sort: -S argument '{}' too large", buffer_size));
.stderr_only(format!(
"sort: --buffer-size argument '{}' too large",
buffer_size
));
}
}
}

View file

@ -57,15 +57,18 @@ fn test_stdbuf_line_buffering_stdin_fails() {
#[cfg(not(target_os = "windows"))]
#[test]
fn test_stdbuf_invalid_mode_fails() {
// TODO: GNU's `stdbuf` (8.32) does not return "\nTry 'stdbuf --help' for more information."
// for invalid modes.
new_ucmd!()
.args(&["-i", "1024R", "head"])
.fails()
.stderr_contains("stdbuf: invalid mode 1024R");
#[cfg(not(target_pointer_width = "128"))]
new_ucmd!()
.args(&["--error", "1Y", "head"])
.fails()
.stderr_contains("stdbuf: invalid mode 1Y: Value too large to be stored in data type");
let options = ["--input", "--output", "--error"];
for option in &options {
new_ucmd!()
.args(&[*option, "1024R", "head"])
.fails()
.code_is(125)
.stderr_only("stdbuf: invalid mode 1024R");
#[cfg(not(target_pointer_width = "128"))]
new_ucmd!()
.args(&[*option, "1Y", "head"])
.fails()
.code_is(125)
.stderr_contains("stdbuf: invalid mode 1Y: Value too large for defined data type");
}
}