From 842dc3ea2b71fda1b5872ed684982d3f377f72f6 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 5 Jul 2026 17:18:35 +0200 Subject: [PATCH] ls: simplify tab size parsing and loop the tabsize tests --- src/uu/ls/src/config.rs | 9 +++------ tests/by-util/test_ls.rs | 27 ++++++++++----------------- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/src/uu/ls/src/config.rs b/src/uu/ls/src/config.rs index 83f4fbcd0de..22e7c535bc1 100644 --- a/src/uu/ls/src/config.rs +++ b/src/uu/ls/src/config.rs @@ -669,7 +669,7 @@ fn parse_width(width_match: Option<&String>) -> Result { } /// Parses the tab size value from the command line -fn parse_tab_size(size_str: &str) -> Result> { +fn parse_tab_size(size_str: &str) -> Result { size_str .parse::() .ok() @@ -679,7 +679,7 @@ fn parse_tab_size(size_str: &str) -> Result> { .or_else(|| size_str.strip_prefix("0X")) .and_then(|hex| usize::from_str_radix(hex, 16).ok()) }) - .ok_or_else(|| Box::new(LsError::InvalidTabSize(size_str.to_string()))) + .ok_or_else(|| LsError::InvalidTabSize(size_str.to_string())) } impl Config { @@ -976,10 +976,7 @@ impl Config { let tab_size = if needs_color { Some(0) } else if let Some(size_str) = options.get_one::(options::format::TAB_SIZE) { - match parse_tab_size(size_str) { - Ok(n) => Some(n), - Err(e) => return Err(e), - } + Some(parse_tab_size(size_str)?) } else { None }; diff --git a/tests/by-util/test_ls.rs b/tests/by-util/test_ls.rs index 53442b0deb2..6f9d8772601 100644 --- a/tests/by-util/test_ls.rs +++ b/tests/by-util/test_ls.rs @@ -5297,24 +5297,17 @@ fn test_symlink_target_extension_color() { fn test_tabsize_option() { let scene = TestScenario::new(util_name!()); - scene.ucmd().args(&["-T", "3"]).succeeds(); + for valid in ["3", "0", "0xff"] { + scene.ucmd().args(&["-T", valid]).succeeds(); + } scene.ucmd().args(&["--tabsize", "0"]).succeeds(); - scene - .ucmd() - .arg("--tabsize=-3") - .fails() - .stderr_is("ls: invalid tab size: '-3'\n"); - scene - .ucmd() - .arg("--tabsize=a") - .fails() - .stderr_is("ls: invalid tab size: 'a'\n"); - scene - .ucmd() - .arg("--tabsize=3.14") - .fails() - .stderr_is("ls: invalid tab size: '3.14'\n"); - scene.ucmd().args(&["-T", "0xff"]).succeeds(); + for invalid in ["-3", "a", "3.14"] { + scene + .ucmd() + .arg(format!("--tabsize={invalid}")) + .fails() + .stderr_is(format!("ls: invalid tab size: '{invalid}'\n")); + } scene.ucmd().arg("-T").fails(); }