From e9dc2930ee8260b3c3f7863ade3426239eb0332f Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Fri, 8 Dec 2023 15:10:48 +0100 Subject: [PATCH] ls: handle invalid block size as GNU does --- src/uu/ls/src/ls.rs | 9 ++++----- tests/by-util/test_ls.rs | 10 ++++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/uu/ls/src/ls.rs b/src/uu/ls/src/ls.rs index deb8aac3d..074210576 100644 --- a/src/uu/ls/src/ls.rs +++ b/src/uu/ls/src/ls.rs @@ -182,7 +182,7 @@ impl UError for LsError { Self::IOError(_) => 1, Self::IOErrorContext(_, _, false) => 1, Self::IOErrorContext(_, _, true) => 2, - Self::BlockSizeParseError(_) => 1, + Self::BlockSizeParseError(_) => 2, Self::ConflictingArgumentDired => 1, Self::DiredAndZeroAreIncompatible => 2, Self::AlreadyListedError(_) => 2, @@ -806,10 +806,9 @@ impl Config { match parse_size_u64(&raw_block_size.to_string_lossy()) { Ok(size) => Some(size), Err(_) => { - show!(LsError::BlockSizeParseError( - opt_block_size.unwrap().clone() - )); - None + return Err(Box::new(LsError::BlockSizeParseError( + opt_block_size.unwrap().clone(), + ))); } } } else if env_var_posixly_correct.is_some() { diff --git a/tests/by-util/test_ls.rs b/tests/by-util/test_ls.rs index 8bc2b75ac..887f90e0f 100644 --- a/tests/by-util/test_ls.rs +++ b/tests/by-util/test_ls.rs @@ -3856,6 +3856,16 @@ fn test_posixly_correct() { .stdout_contains_line("total 8"); } +#[test] +fn test_ls_invalid_block_size() { + new_ucmd!() + .arg("--block-size=invalid") + .fails() + .code_is(2) + .no_stdout() + .stderr_is("ls: invalid --block-size argument 'invalid'\n"); +} + #[test] fn test_ls_hyperlink() { let scene = TestScenario::new(util_name!());