diff options
author | Ben Wiederhake <BenWiederhake.GitHub@gmx.de> | 2024-02-27 23:54:19 +0100 |
---|---|---|
committer | Sylvestre Ledru <sylvestre@debian.org> | 2024-03-09 22:51:13 +0100 |
commit | b233569b9ce1f47598cb231720df3400f5e77185 (patch) | |
tree | 96c860212769352448de271a438044ad3981ad18 | |
parent | 4ee3f68e6a595b6e93df8f539a13e0e31586c37c (diff) |
shuf: fix error message text on negative-sized ranges
Found by @cakebaker:
https://github.com/uutils/coreutils/pull/6011#discussion_r1501838317
-rw-r--r-- | src/uu/shuf/src/shuf.rs | 6 | ||||
-rw-r--r-- | tests/by-util/test_shuf.rs | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/uu/shuf/src/shuf.rs b/src/uu/shuf/src/shuf.rs index 0923c0a55..40028c2fb 100644 --- a/src/uu/shuf/src/shuf.rs +++ b/src/uu/shuf/src/shuf.rs @@ -471,7 +471,11 @@ fn parse_range(input_range: &str) -> Result<RangeInclusive<usize>, String> { let end = to .parse::<usize>() .map_err(|_| format!("invalid input range: {}", to.quote()))?; - Ok(begin..=end) + if begin <= end || begin == end + 1 { + Ok(begin..=end) + } else { + Err(format!("invalid input range: {}", input_range.quote())) + } } else { Err(format!("invalid input range: {}", input_range.quote())) } diff --git a/tests/by-util/test_shuf.rs b/tests/by-util/test_shuf.rs index 9af9f9c62..8a991e435 100644 --- a/tests/by-util/test_shuf.rs +++ b/tests/by-util/test_shuf.rs @@ -762,7 +762,11 @@ fn test_range_empty() { #[test] fn test_range_empty_minus_one() { - new_ucmd!().arg("-i5-3").succeeds().no_output(); + new_ucmd!() + .arg("-i5-3") + .fails() + .no_stdout() + .stderr_only("shuf: invalid input range: '5-3'\n"); } #[test] @@ -792,5 +796,5 @@ fn test_range_repeat_empty_minus_one() { .arg("-ri5-3") .fails() .no_stdout() - .stderr_only("shuf: no lines to repeat\n"); + .stderr_only("shuf: invalid input range: '5-3'\n"); } |