diff --git a/src/uu/uniq/src/uniq.rs b/src/uu/uniq/src/uniq.rs index d947166fe..f8e7ef4a5 100644 --- a/src/uu/uniq/src/uniq.rs +++ b/src/uu/uniq/src/uniq.rs @@ -319,7 +319,9 @@ pub fn uu_app<'a>() -> Command<'a> { .help("print all duplicate lines. Delimiting is done with blank lines. [default: none]") .value_name("delimit-method") .min_values(0) - .max_values(1), + .max_values(1) + .default_missing_value("none") + .require_equals(true), ) .arg( Arg::new(options::GROUP) @@ -334,6 +336,8 @@ pub fn uu_app<'a>() -> Command<'a> { .value_name("group-method") .min_values(0) .max_values(1) + .default_missing_value("separate") + .require_equals(true) .conflicts_with_all(&[ options::REPEATED, options::ALL_REPEATED, diff --git a/tests/by-util/test_uniq.rs b/tests/by-util/test_uniq.rs index 77ad10b32..5b22622d3 100644 --- a/tests/by-util/test_uniq.rs +++ b/tests/by-util/test_uniq.rs @@ -1,3 +1,5 @@ +use std::io::Write; + // spell-checker:ignore nabcd use crate::common::util::*; @@ -86,6 +88,20 @@ fn test_stdin_all_repeated() { .stdout_is_fixture("sorted-all-repeated.expected"); } +#[test] +fn test_all_repeated_followed_by_filename() { + let filename = "test.txt"; + let (at, mut ucmd) = at_and_ucmd!(); + + let mut file = at.make_file(filename); + file.write_all(b"a\na\n").unwrap(); + + ucmd.args(&["--all-repeated", filename]) + .run() + .success() + .stdout_is("a\na\n"); +} + #[test] fn test_stdin_all_repeated_separate() { new_ucmd!() @@ -160,6 +176,20 @@ fn test_group() { .stdout_is_fixture("group.expected"); } +#[test] +fn test_group_followed_by_filename() { + let filename = "test.txt"; + let (at, mut ucmd) = at_and_ucmd!(); + + let mut file = at.make_file(filename); + file.write_all(b"a\na\n").unwrap(); + + ucmd.args(&["--group", filename]) + .run() + .success() + .stdout_is("a\na\n"); +} + #[test] fn test_group_prepend() { new_ucmd!()