From ed2a871c0e65b53b5f1161ed2219875787a356eb Mon Sep 17 00:00:00 2001 From: Tanbir Hossain Ramim <96797470+TanbirRamim@users.noreply.github.com> Date: Sat, 24 Oct 2026 00:50:43 +0200 Subject: [PATCH 1/2] uucore: keep numeric-looking arguments verbatim in clap errors --- src/uucore/src/lib/mods/clap_localization.rs | 7 ++++--- tests/by-util/test_ls.rs | 9 +++++++++ tests/by-util/test_uname.rs | 11 +++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/uucore/src/lib/mods/clap_localization.rs b/src/uucore/src/lib/mods/clap_localization.rs index fac19539b51..d128fa490c9 100644 --- a/src/uucore/src/lib/mods/clap_localization.rs +++ b/src/uucore/src/lib/mods/clap_localization.rs @@ -14,6 +14,7 @@ use crate::error::{UResult, USimpleError}; use crate::locale::translate; +use crate::translate_text; use clap::error::{ContextKind, ErrorKind}; use clap::{ArgMatches, Command, Error}; @@ -151,7 +152,7 @@ impl<'a> ErrorFormatter<'a> { let _ = write!( stderr(), "{}\n\n", - translate!( + translate_text!( "clap-error-unexpected-argument", "arg" => self.color_mgr.colorize(&arg_str, Color::Yellow), "error_word" => self.color_mgr.colorize(&error_word, Color::Red) @@ -164,7 +165,7 @@ impl<'a> ErrorFormatter<'a> { let _ = write!( stderr(), "{}\n\n", - translate!( + translate_text!( "clap-error-similar-argument", "tip_word" => self.color_mgr.colorize(&tip_word, Color::Green), "suggestion" => self.color_mgr.colorize(&suggested_arg.to_string(), Color::Green) @@ -204,7 +205,7 @@ impl<'a> ErrorFormatter<'a> { } else { // Invalid value provided let error_word = translate!("common-error"); - let error_msg = translate!( + let error_msg = translate_text!( "clap-error-invalid-value", "error_word" => self.color_mgr.colorize(&error_word, Color::Red), "value" => self.color_mgr.colorize(&value, Color::Yellow), diff --git a/tests/by-util/test_ls.rs b/tests/by-util/test_ls.rs index 6662c427590..087892465bf 100644 --- a/tests/by-util/test_ls.rs +++ b/tests/by-util/test_ls.rs @@ -146,6 +146,15 @@ fn test_invalid_value_returns_2() { } } +#[test] +fn test_invalid_numeric_value_is_verbatim() { + new_ucmd!() + .env("LC_ALL", "C") + .arg("--format=007") + .fails() + .stderr_contains("invalid value '007' for '--format"); +} + #[test] fn test_invalid_value_time_style() { // This is the only flag which does not raise an error if it is invalid but not actually used: diff --git a/tests/by-util/test_uname.rs b/tests/by-util/test_uname.rs index 4875f159825..c5236334a0f 100644 --- a/tests/by-util/test_uname.rs +++ b/tests/by-util/test_uname.rs @@ -11,6 +11,17 @@ fn test_invalid_arg() { new_ucmd!().arg("--definitely-invalid").fails_with_code(1); } +#[test] +fn test_unexpected_numeric_operand_is_verbatim() { + for arg in ["007", "1e3", "1.50"] { + new_ucmd!() + .env("LC_ALL", "C") + .arg(arg) + .fails_with_code(1) + .stderr_contains(format!("unexpected argument '{arg}' found")); + } +} + #[test] fn test_uname() { new_ucmd!().succeeds(); From 882bbff9f70fce09915aa2db4f1d4b3b26a77dee Mon Sep 17 00:00:00 2001 From: Tanbir Hossain Ramim <96797470+TanbirRamim@users.noreply.github.com> Date: Sat, 24 Oct 2026 18:27:22 +0200 Subject: [PATCH 2/2] uucore: import translate_text from locale with translate Co-authored-by: Sylvestre Ledru --- src/uucore/src/lib/mods/clap_localization.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/uucore/src/lib/mods/clap_localization.rs b/src/uucore/src/lib/mods/clap_localization.rs index d128fa490c9..c6d272c3d12 100644 --- a/src/uucore/src/lib/mods/clap_localization.rs +++ b/src/uucore/src/lib/mods/clap_localization.rs @@ -13,8 +13,7 @@ //! use crate::error::{UResult, USimpleError}; -use crate::locale::translate; -use crate::translate_text; +use crate::locale::{translate, translate_text}; use clap::error::{ContextKind, ErrorKind}; use clap::{ArgMatches, Command, Error};