mirror of
https://github.com/uutils/coreutils.git
synced 2026-06-10 15:48:22 -07:00
df: treat env var with zero block size as invalid
This commit is contained in:
@@ -9,7 +9,7 @@ use std::{env, fmt};
|
||||
|
||||
use uucore::{
|
||||
display::Quotable,
|
||||
parser::parse_size::{ParseSizeError, parse_size_u64},
|
||||
parser::parse_size::{ParseSizeError, parse_size_non_zero_u64, parse_size_u64},
|
||||
};
|
||||
|
||||
/// The first ten powers of 1024.
|
||||
@@ -213,7 +213,7 @@ pub(crate) fn read_block_size(matches: &ArgMatches) -> Result<BlockSize, ParseSi
|
||||
fn block_size_from_env() -> Option<u64> {
|
||||
for env_var in ["DF_BLOCK_SIZE", "BLOCK_SIZE", "BLOCKSIZE"] {
|
||||
if let Ok(env_size) = env::var(env_var) {
|
||||
return parse_size_u64(&env_size).ok();
|
||||
return parse_size_non_zero_u64(&env_size).ok();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -690,6 +690,24 @@ fn test_block_size_from_env() {
|
||||
assert_eq!(get_header("BLOCKSIZE", "333"), "333B-blocks");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_block_size_from_env_zero() {
|
||||
fn get_header(env_var: &str, env_value: &str) -> String {
|
||||
let output = new_ucmd!()
|
||||
.arg("--output=size")
|
||||
.env(env_var, env_value)
|
||||
.succeeds()
|
||||
.stdout_str_lossy();
|
||||
output.lines().next().unwrap().trim().to_string()
|
||||
}
|
||||
|
||||
let default_block_size_header = "1K-blocks";
|
||||
|
||||
assert_eq!(get_header("DF_BLOCK_SIZE", "0"), default_block_size_header);
|
||||
assert_eq!(get_header("BLOCK_SIZE", "0"), default_block_size_header);
|
||||
assert_eq!(get_header("BLOCKSIZE", "0"), default_block_size_header);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_block_size_from_env_precedences() {
|
||||
fn get_header(one: (&str, &str), two: (&str, &str)) -> String {
|
||||
@@ -747,6 +765,16 @@ fn test_invalid_block_size_from_env() {
|
||||
let header = output.lines().next().unwrap().trim().to_string();
|
||||
|
||||
assert_eq!(header, default_block_size_header);
|
||||
|
||||
let output = new_ucmd!()
|
||||
.arg("--output=size")
|
||||
.env("DF_BLOCK_SIZE", "0")
|
||||
.env("BLOCK_SIZE", "222")
|
||||
.succeeds()
|
||||
.stdout_str_lossy();
|
||||
let header = output.lines().next().unwrap().trim().to_string();
|
||||
|
||||
assert_eq!(header, default_block_size_header);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user