diff --git a/src/uu/tr/src/tr.rs b/src/uu/tr/src/tr.rs index 90096c90b..8b66d360c 100644 --- a/src/uu/tr/src/tr.rs +++ b/src/uu/tr/src/tr.rs @@ -164,6 +164,7 @@ pub fn uu_app() -> Command { .about(ABOUT) .override_usage(format_usage(USAGE)) .infer_long_args(true) + .trailing_var_arg(true) .arg( Arg::new(options::COMPLEMENT) .visible_short_alias('C') diff --git a/tests/by-util/test_tr.rs b/tests/by-util/test_tr.rs index 4ed3d3967..1086dee6a 100644 --- a/tests/by-util/test_tr.rs +++ b/tests/by-util/test_tr.rs @@ -78,6 +78,14 @@ fn test_complement1() { .stdout_is("aX"); } +#[test] +fn test_complement_afterwards_is_not_flag() { + new_ucmd!() + .args(&["a", "X", "-c"]) + .fails() + .stderr_contains("extra operand '-c'"); +} + #[test] fn test_complement2() { new_ucmd!() @@ -127,6 +135,22 @@ fn test_complement_multi_early() { .stdout_is("aX"); } +#[test] +fn test_complement_multi_middle() { + new_ucmd!() + .args(&["-c", "a", "-c", "X"]) + .fails() + .stderr_contains("tr: extra operand 'X'"); +} + +#[test] +fn test_complement_multi_late() { + new_ucmd!() + .args(&["-c", "a", "X", "-c"]) + .fails() + .stderr_contains("tr: extra operand '-c'"); +} + #[test] fn test_squeeze() { new_ucmd!()