summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/uu/ls/src/ls.rs11
-rw-r--r--tests/by-util/test_ls.rs8
2 files changed, 16 insertions, 3 deletions
diff --git a/src/uu/ls/src/ls.rs b/src/uu/ls/src/ls.rs
index 8d1ecdbc6..8dbd95136 100644
--- a/src/uu/ls/src/ls.rs
+++ b/src/uu/ls/src/ls.rs
@@ -840,9 +840,14 @@ impl Config {
match parse_size_u64(&raw_block_size.to_string_lossy()) {
Ok(size) => Some(size),
Err(_) => {
- return Err(Box::new(LsError::BlockSizeParseError(
- opt_block_size.unwrap().clone(),
- )));
+ // only fail if invalid block size was specified with --block-size,
+ // ignore invalid block size from env vars
+ if let Some(invalid_block_size) = opt_block_size {
+ return Err(Box::new(LsError::BlockSizeParseError(
+ invalid_block_size.clone(),
+ )));
+ }
+ None
}
}
} 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 e503807d6..de62c659c 100644
--- a/tests/by-util/test_ls.rs
+++ b/tests/by-util/test_ls.rs
@@ -3874,6 +3874,14 @@ fn test_ls_invalid_block_size() {
.stderr_is("ls: invalid --block-size argument 'invalid'\n");
}
+// TODO ensure the correct block size is used when using -l because
+// the output of "ls -l" and "BLOCK_SIZE=invalid ls -l" is different
+#[test]
+fn test_ls_invalid_block_size_in_env_var() {
+ new_ucmd!().env("LS_BLOCK_SIZE", "invalid").succeeds();
+ new_ucmd!().env("BLOCK_SIZE", "invalid").succeeds();
+}
+
#[cfg(all(unix, feature = "dd"))]
#[test]
fn test_ls_block_size_override() {