-use std::{
- io,
- io::prelude::Write,
-};
+use std::{io, io::prelude::Write};
+use super::OutputFormatter;
use crate::{
- types::TestDesc,
- time,
- test_result::TestResult,
- console::{ConsoleTestState, OutputLocation},
bench::fmt_bench_samples,
+ console::{ConsoleTestState, OutputLocation},
+ test_result::TestResult,
+ time,
+ types::TestDesc,
};
-use super::OutputFormatter;
pub(crate) struct PrettyFormatter<T> {
out: OutputLocation<T>,
is_multithreaded: bool,
time_options: Option<time::TestTimeOptions>,
) -> Self {
- PrettyFormatter {
- out,
- use_color,
- max_name_len,
- is_multithreaded,
- time_options
- }
+ PrettyFormatter { out, use_color, max_name_len, is_multithreaded, time_options }
}
#[cfg(test)]
fn write_time(
&mut self,
desc: &TestDesc,
- exec_time: Option<&time::TestExecTime>
+ exec_time: Option<&time::TestExecTime>,
) -> io::Result<()> {
if let (Some(opts), Some(time)) = (self.time_options, exec_time) {
let time_str = format!(" <{}>", time);
match color {
Some(color) => self.write_pretty(&time_str, color)?,
- None => self.write_plain(&time_str)?
+ None => self.write_plain(&time_str)?,
}
}
fn write_results(
&mut self,
inputs: &Vec<(TestDesc, Vec<u8>)>,
- results_type: &str
+ results_type: &str,
) -> io::Result<()> {
let results_out_str = format!("\n{}:\n", results_type);
stdouts.push_str(&format!("---- {} stdout ----\n", f.name));
let output = String::from_utf8_lossy(stdout);
stdouts.push_str(&output);
- stdouts.push_str("\n");
+ stdouts.push('\n');
}
}
if !stdouts.is_empty() {
self.write_plain(&format!(
"test {} has been running for over {} seconds\n",
- desc.name, time::TEST_WARN_TIMEOUT_S
+ desc.name,
+ time::TEST_WARN_TIMEOUT_S
))
}
let s = if state.allowed_fail > 0 {
format!(
- ". {} passed; {} failed ({} allowed); {} ignored; {} measured; {} filtered out\n\n",
+ ". {} passed; {} failed ({} allowed); {} ignored; {} measured; {} filtered out",
state.passed,
state.failed + state.allowed_fail,
state.allowed_fail,
)
} else {
format!(
- ". {} passed; {} failed; {} ignored; {} measured; {} filtered out\n\n",
+ ". {} passed; {} failed; {} ignored; {} measured; {} filtered out",
state.passed, state.failed, state.ignored, state.measured, state.filtered_out
)
};
self.write_plain(&s)?;
+ if let Some(ref exec_time) = state.exec_time {
+ let time_str = format!("; finished in {}", exec_time);
+ self.write_plain(&time_str)?;
+ }
+
+ self.write_plain("\n\n")?;
+
Ok(success)
}
}