summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Wiederhake <BenWiederhake.GitHub@gmx.de>2024-02-27 23:54:19 +0100
committerSylvestre Ledru <sylvestre@debian.org>2024-03-09 22:51:13 +0100
commitb233569b9ce1f47598cb231720df3400f5e77185 (patch)
tree96c860212769352448de271a438044ad3981ad18
parent4ee3f68e6a595b6e93df8f539a13e0e31586c37c (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.rs6
-rw-r--r--tests/by-util/test_shuf.rs8
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");
}