in src/output.rs [214:241]
fn test_non_blocking_output_errors_on_next_output() -> anyhow::Result<()> {
let (writer, drain) = TestWriter::new();
let mut output = NonBlockingSuperConsoleOutput::new_for_writer(move || writer.clone())?;
// Send a first message, this will go into write()
assert!(output.should_render());
output.output(msg())?;
// Send a second message, this will stay in the channel.
output.output(msg())?;
// Now, kill the output
assert!(!output.should_render());
drop(drain);
// We expect that should_render() will eventually return true.
while !output.should_render() {
std::thread::yield_now();
continue;
}
// Likewise, we expect that sending output and finalizing wold fail.
assert!(output.output(vec![]).is_err());
assert!(Box::new(output).finalize().is_err());
Ok(())
}