From 220c3ca4fbd334c9827c05fc111b23969d35b148 Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Fri, 1 Jul 2022 13:34:05 +0200 Subject: [PATCH] numfmt: show error if --padding is zero --- src/uu/numfmt/src/numfmt.rs | 9 ++++++++- tests/by-util/test_numfmt.rs | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/uu/numfmt/src/numfmt.rs b/src/uu/numfmt/src/numfmt.rs index 1b3ab3950..e8a4fd557 100644 --- a/src/uu/numfmt/src/numfmt.rs +++ b/src/uu/numfmt/src/numfmt.rs @@ -103,7 +103,14 @@ fn parse_options(args: &ArgMatches) -> Result { let transform = TransformOptions { from, to }; let padding = match args.value_of(options::PADDING) { - Some(s) => s.parse::().map_err(|err| err.to_string()), + Some(s) => s + .parse::() + .map_err(|_| s) + .and_then(|n| match n { + 0 => Err(s), + _ => Ok(n), + }) + .map_err(|s| format!("invalid padding value {}", s.quote())), None => Ok(0), }?; diff --git a/tests/by-util/test_numfmt.rs b/tests/by-util/test_numfmt.rs index 38faacdc5..53ed58d99 100644 --- a/tests/by-util/test_numfmt.rs +++ b/tests/by-util/test_numfmt.rs @@ -593,3 +593,17 @@ fn test_invalid_argument_returns_status_1() { .fails() .code_is(1); } + +#[test] +fn test_invalid_padding_value() { + let padding_values = vec!["A", "0"]; + + for padding_value in padding_values { + new_ucmd!() + .arg(format!("--padding={}", padding_value)) + .arg("5") + .fails() + .code_is(1) + .stderr_contains(format!("invalid padding value '{}'", padding_value)); + } +}