Skip to content

Commit 05c29c3

Browse files
fix(logs): no longer output group prefixes if no logs present
1 parent b7f945f commit 05c29c3

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

crates/turborepo-ui/src/output.rs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,10 @@ impl<W: Write> OutputClient<W> {
153153
.flatten()
154154
.or(primary.footer);
155155

156-
if matches!(behavior, OutputClientBehavior::Grouped) {
156+
// Only output group logs header and footers if there are logs to be printed
157+
if matches!(behavior, OutputClientBehavior::Grouped)
158+
&& buffers.as_ref().is_some_and(|b| !b.is_empty())
159+
{
157160
let buffers = buffers
158161
.as_ref()
159162
.expect("grouped logging requires buffer to be present");
@@ -464,6 +467,29 @@ mod test {
464467
}
465468
}
466469

470+
#[test]
471+
fn test_grouped_logs_no_output_no_marginals() -> io::Result<()> {
472+
let sink = OutputSink::new(Vec::new(), Vec::new());
473+
let mut logger = sink.logger(OutputClientBehavior::Grouped);
474+
logger.with_header_footer(
475+
Some(Arc::new(|_| "header\n".into())),
476+
Some(Arc::new(|_| "footer\n".into())),
477+
);
478+
479+
// Don't write any logs
480+
let logs = logger.finish(false)?;
481+
482+
// Should have empty buffer since no logs were written
483+
assert!(logs.is_none() || logs.unwrap().is_empty());
484+
485+
let SinkWriters { out, err } = Arc::into_inner(sink.writers).unwrap().into_inner().unwrap();
486+
// Headers and footers should not be written when there are no logs
487+
assert_eq!(out, b"");
488+
assert_eq!(err, b"");
489+
490+
Ok(())
491+
}
492+
467493
#[test]
468494
fn assert_output_writer_sync() {
469495
// This is the bound required for a value to be held across an await

0 commit comments

Comments
 (0)