diff --git a/src/uu/tr/src/tr.rs b/src/uu/tr/src/tr.rs index 47747abac..cbf32c43e 100644 --- a/src/uu/tr/src/tr.rs +++ b/src/uu/tr/src/tr.rs @@ -64,6 +64,16 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { )); } + if delete_flag & squeeze_flag && sets_len < 2 { + return Err(UUsageError::new( + 1, + format!( + "missing operand after {}\nTwo strings must be given when deleting and squeezing.", + sets[0].quote() + ), + )); + } + if sets_len > 1 { let start = "extra operand"; if delete_flag && !squeeze_flag { diff --git a/tests/by-util/test_tr.rs b/tests/by-util/test_tr.rs index f1601c15b..e61a51650 100644 --- a/tests/by-util/test_tr.rs +++ b/tests/by-util/test_tr.rs @@ -163,6 +163,15 @@ fn test_translate_and_squeeze_multiple_lines() { .stdout_is("yaay\nyaay"); // spell-checker:disable-line } +#[test] +fn test_delete_and_squeeze_one_set() { + new_ucmd!() + .args(&["-ds", "a-z"]) + .fails() + .stderr_contains("missing operand after 'a-z'") + .stderr_contains("Two strings must be given when deleting and squeezing."); +} + #[test] fn test_delete_and_squeeze() { new_ucmd!()