diff --git a/src/uu/head/src/head.rs b/src/uu/head/src/head.rs index 955b3334dfd..0fc28fb6911 100644 --- a/src/uu/head/src/head.rs +++ b/src/uu/head/src/head.rs @@ -460,7 +460,7 @@ fn uu_head(options: &HeadOptions) -> UResult<()> { writeln!(stdout)?; } write!(stdout, "==> ")?; - print_verbatim(file).unwrap(); + print_verbatim(file)?; writeln!(stdout, " <==")?; first = false; } diff --git a/tests/by-util/test_head.rs b/tests/by-util/test_head.rs index 0f4e9dae5dd..e2edbed6c09 100644 --- a/tests/by-util/test_head.rs +++ b/tests/by-util/test_head.rs @@ -919,6 +919,22 @@ fn test_write_to_dev_full() { } } +#[cfg(any(target_os = "linux", target_os = "freebsd", target_os = "netbsd"))] +#[test] +fn test_verbose_header_long_name_write_error_no_panic() { + use std::fs::OpenOptions; + + let dev_full = OpenOptions::new().write(true).open("/dev/full").unwrap(); + + let long_name = format!("/dev/{}null", "./".repeat(512)); + + new_ucmd!() + .args(&["-v", &long_name]) + .set_stdout(dev_full) + .fails_with_code(1) + .stderr_contains("head: No space left on device"); +} + #[test] #[cfg(target_os = "linux")] #[cfg_attr(wasi_runner, ignore = "WASI: argv/filenames must be valid UTF-8")]