diff --git a/src/uu/nl/src/nl.rs b/src/uu/nl/src/nl.rs index 3f58e77cdff..ec69895fc23 100644 --- a/src/uu/nl/src/nl.rs +++ b/src/uu/nl/src/nl.rs @@ -353,6 +353,7 @@ pub fn uu_app() -> Command { .long(options::LINE_INCREMENT) .help(translate!("nl-help-line-increment")) .value_name("NUMBER") + .allow_negative_numbers(true) .value_parser(clap::value_parser!(i64)), ) .arg( @@ -392,6 +393,7 @@ pub fn uu_app() -> Command { .long(options::STARTING_LINE_NUMBER) .help(translate!("nl-help-starting-line-number")) .value_name("NUMBER") + .allow_negative_numbers(true) .value_parser(clap::value_parser!(i64)), ) .arg( diff --git a/tests/by-util/test_nl.rs b/tests/by-util/test_nl.rs index d63a1790c0a..fd27723ba00 100644 --- a/tests/by-util/test_nl.rs +++ b/tests/by-util/test_nl.rs @@ -1039,3 +1039,25 @@ fn test_other_numeric_options_still_reject_values_above_the_limit() { .stderr_contains("invalid value '18446744073709551616'"); } } + +#[test] +fn test_negative_starting_line_as_a_separate_argument() { + for arg in ["-v", "--starting-line-number"] { + new_ucmd!() + .args(&[arg, "-1"]) + .pipe_in("a\nb\n") + .succeeds() + .stdout_is(" -1\ta\n 0\tb\n"); + } +} + +#[test] +fn test_negative_line_increment_as_a_separate_argument() { + for arg in ["-i", "--line-increment"] { + new_ucmd!() + .args(&[arg, "-1"]) + .pipe_in("a\nb\nc\n") + .succeeds() + .stdout_is(" 1\ta\n 0\tb\n -1\tc\n"); + } +}