diff --git a/src/uucore/src/lib/features/tokenize/num_format/formatters/intf.rs b/src/uucore/src/lib/features/tokenize/num_format/formatters/intf.rs index 11070113c..767c0c4bb 100644 --- a/src/uucore/src/lib/features/tokenize/num_format/formatters/intf.rs +++ b/src/uucore/src/lib/features/tokenize/num_format/formatters/intf.rs @@ -8,10 +8,11 @@ //! formatter for unsigned and signed int subs //! unsigned int: %X %x (hex u64) %o (octal u64) %u (base ten u64) //! signed int: %i %d (both base ten i64) +use crate::error::set_exit_code; +use crate::features::tokenize::num_format::num_format::warn_expected_numeric; + use super::super::format_field::FormatField; -use super::super::formatter::{ - get_it_at, warn_incomplete_conv, Base, FormatPrimitive, Formatter, InitialPrefix, -}; +use super::super::formatter::{get_it_at, Base, FormatPrimitive, Formatter, InitialPrefix}; use std::i64; use std::u64; @@ -112,7 +113,8 @@ impl Intf { } } _ => { - warn_incomplete_conv(str_in); + warn_expected_numeric(str_in); + set_exit_code(1); break; } } diff --git a/tests/by-util/test_printf.rs b/tests/by-util/test_printf.rs index a297dbf68..ab3505a32 100644 --- a/tests/by-util/test_printf.rs +++ b/tests/by-util/test_printf.rs @@ -258,6 +258,14 @@ fn sub_num_hex_upper() { .stdout_only("thirty in hex is 1E"); } +#[test] +fn sub_num_hex_non_numerical() { + new_ucmd!() + .args(&["parameters need to be numbers %X", "%194"]) + .fails() + .code_is(1); +} + #[test] fn sub_num_float() { new_ucmd!()