-use super::*;
-use super::console::{ConsoleTestState, OutputLocation};
+use std::{borrow::Cow, io, io::prelude::Write};
+
+use super::OutputFormatter;
+use crate::{
+ console::{ConsoleTestState, OutputLocation},
+ test_result::TestResult,
+ time,
+ types::TestDesc,
+};
pub(crate) struct JsonFormatter<T> {
out: OutputLocation<T>,
ty, name, evt
))?;
if let Some(exec_time) = exec_time {
- self.write_message(&*format!(
- r#", "exec_time": "{}""#,
- exec_time
- ))?;
+ self.write_message(&*format!(r#", "exec_time": "{}""#, exec_time))?;
}
if let Some(stdout) = stdout {
- self.write_message(&*format!(
- r#", "stdout": "{}""#,
- EscapedString(stdout)
- ))?;
+ self.write_message(&*format!(r#", "stdout": "{}""#, EscapedString(stdout)))?;
}
if let Some(extra) = extra {
- self.write_message(&*format!(
- r#", {}"#,
- extra
- ))?;
+ self.write_message(&*format!(r#", {}"#, extra))?;
}
self.writeln_message(" }")
}
stdout: &[u8],
state: &ConsoleTestState,
) -> io::Result<()> {
- let stdout = if (state.options.display_output || *result != TrOk) && stdout.len() > 0 {
+ let display_stdout = state.options.display_output || *result != TestResult::TrOk;
+ let stdout = if display_stdout && stdout.len() > 0 {
Some(String::from_utf8_lossy(stdout))
} else {
None
};
match *result {
- TrOk => {
+ TestResult::TrOk => {
self.write_event("test", desc.name.as_slice(), "ok", exec_time, stdout, None)
}
- TrFailed => {
+ TestResult::TrFailed => {
self.write_event("test", desc.name.as_slice(), "failed", exec_time, stdout, None)
}
- TrTimedFail => self.write_event(
+ TestResult::TrTimedFail => self.write_event(
"test",
desc.name.as_slice(),
"failed",
Some(r#""reason": "time limit exceeded""#),
),
- TrFailedMsg(ref m) => self.write_event(
+ TestResult::TrFailedMsg(ref m) => self.write_event(
"test",
desc.name.as_slice(),
"failed",
Some(&*format!(r#""message": "{}""#, EscapedString(m))),
),
- TrIgnored => {
+ TestResult::TrIgnored => {
self.write_event("test", desc.name.as_slice(), "ignored", exec_time, stdout, None)
}
- TrAllowedFail => self.write_event(
+ TestResult::TrAllowedFail => self.write_event(
"test",
desc.name.as_slice(),
"allowed_failure",
None,
),
- TrBench(ref bs) => {
+ TestResult::TrBench(ref bs) => {
let median = bs.ns_iter_summ.median as usize;
let deviation = (bs.ns_iter_summ.max - bs.ns_iter_summ.min) as usize;