handle non-json output in stdout

This commit is contained in:
Pietro Albini 2023-03-03 10:03:23 +01:00
parent f23e20569c
commit 9a1ff1b958
No known key found for this signature in database
GPG key ID: CD76B35F7734769E

View file

@ -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();
}
}
}