diff --git a/src/uu/uniq/src/uniq.rs b/src/uu/uniq/src/uniq.rs index 744ff6d99..444a17829 100644 --- a/src/uu/uniq/src/uniq.rs +++ b/src/uu/uniq/src/uniq.rs @@ -110,6 +110,7 @@ impl Uniq { { write_line_terminator!(writer, line_terminator)?; } + writer.flush().map_err_context(|| "write error".into())?; Ok(()) } @@ -226,7 +227,7 @@ impl Uniq { } else { writer.write_all(line) } - .map_err_context(|| "Failed to write line".to_string())?; + .map_err_context(|| "write error".to_string())?; write_line_terminator!(writer, line_terminator) } diff --git a/tests/by-util/test_uniq.rs b/tests/by-util/test_uniq.rs index b59b5e495..e1d983f99 100644 --- a/tests/by-util/test_uniq.rs +++ b/tests/by-util/test_uniq.rs @@ -1181,3 +1181,14 @@ fn test_stdin_w1_multibyte() { .succeeds() .stdout_is("à\ná\n"); } + +#[cfg(target_os = "linux")] +#[test] +fn test_failed_write_is_reported() { + new_ucmd!() + .pipe_in("hello") + .args(&["-z"]) + .set_stdout(std::fs::File::create("/dev/full").unwrap()) + .fails() + .stderr_is("uniq: write error: No space left on device\n"); +}