From 9a1ff1b95808c6639b8d00f46f675daafad566e7 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Fri, 3 Mar 2023 10:03:23 +0100 Subject: [PATCH] handle non-json output in stdout --- src/bootstrap/render_tests.rs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/bootstrap/render_tests.rs b/src/bootstrap/render_tests.rs index bdcd39e6b83e..1d8e8827e385 100644 --- a/src/bootstrap/render_tests.rs +++ b/src/bootstrap/render_tests.rs @@ -105,12 +105,19 @@ impl<'a> Renderer<'a> { break; } - self.render_message(match serde_json::from_str(&line) { - Ok(parsed) => parsed, - Err(err) => { - panic!("failed to parse libtest json output; error: {err}, line: {line:?}"); - } - }); + let trimmed = line.trim(); + if trimmed.starts_with("{") && trimmed.ends_with("}") { + self.render_message(match serde_json::from_str(&trimmed) { + Ok(parsed) => parsed, + Err(err) => { + panic!("failed to parse libtest json output; error: {err}, line: {line:?}"); + } + }); + } else { + // Handle non-JSON output, for example when --nocapture is passed. + print!("{line}"); + let _ = std::io::stdout().flush(); + } } }