diff --git a/src/uu/csplit/src/csplit.rs b/src/uu/csplit/src/csplit.rs index e4d7c243c..b5004c362 100644 --- a/src/uu/csplit/src/csplit.rs +++ b/src/uu/csplit/src/csplit.rs @@ -585,6 +585,7 @@ pub fn uu_app() -> Command { .version(crate_version!()) .about(ABOUT) .override_usage(format_usage(USAGE)) + .args_override_self(true) .infer_long_args(true) .arg( Arg::new(options::SUFFIX_FORMAT) diff --git a/tests/by-util/test_csplit.rs b/tests/by-util/test_csplit.rs index b52c44b0e..5bd384de3 100644 --- a/tests/by-util/test_csplit.rs +++ b/tests/by-util/test_csplit.rs @@ -1376,3 +1376,39 @@ fn no_such_file() { .fails() .stderr_contains("cannot access 'in': No such file or directory"); } + +#[test] +fn repeat_everything() { + let (at, mut ucmd) = at_and_ucmd!(); + ucmd.args(&[ + "numbers50.txt", + "--suppress-matched", + "--suppress-matched", + "-kzsn", // spell-checker:disable-line + "2", + "-szkn3", // spell-checker:disable-line + "-b", + "%03d", + "-b%03x", + "-f", + "xxy_", + "-fxxz_", // spell-checker:disable-line + "/13/", + "9", + "{5}", + ]) + .fails() + .no_stdout() + .code_is(1) + .stderr_only("csplit: '9': line number out of range on repetition 5\n"); + let count = glob(&at.plus_as_string("xx*")) + .expect("there should be some splits created") + .count(); + assert_eq!(count, 6); + assert_eq!(at.read("xxz_000"), generate(1, 12 + 1)); + assert_eq!(at.read("xxz_001"), generate(14, 17 + 1)); // FIXME: GNU starts at 15 + assert_eq!(at.read("xxz_002"), generate(19, 26 + 1)); + assert_eq!(at.read("xxz_003"), generate(28, 35 + 1)); + assert_eq!(at.read("xxz_004"), generate(37, 44 + 1)); + assert_eq!(at.read("xxz_005"), generate(46, 50 + 1)); +}