]> git.lizzy.rs Git - rust.git/blob - library/test/src/formatters/mod.rs
Merge commit '8d14c94b5c0a66241b4244f1c60ac5859cec1d97' into clippyup
[rust.git] / library / test / src / formatters / mod.rs
1 use std::{io, io::prelude::Write};
2
3 use crate::{
4     console::ConsoleTestState,
5     test_result::TestResult,
6     time,
7     types::{TestDesc, TestName},
8 };
9
10 mod json;
11 mod junit;
12 mod pretty;
13 mod terse;
14
15 pub(crate) use self::json::JsonFormatter;
16 pub(crate) use self::junit::JunitFormatter;
17 pub(crate) use self::pretty::PrettyFormatter;
18 pub(crate) use self::terse::TerseFormatter;
19
20 pub(crate) trait OutputFormatter {
21     fn write_run_start(&mut self, test_count: usize, shuffle_seed: Option<u64>) -> io::Result<()>;
22     fn write_test_start(&mut self, desc: &TestDesc) -> io::Result<()>;
23     fn write_timeout(&mut self, desc: &TestDesc) -> io::Result<()>;
24     fn write_result(
25         &mut self,
26         desc: &TestDesc,
27         result: &TestResult,
28         exec_time: Option<&time::TestExecTime>,
29         stdout: &[u8],
30         state: &ConsoleTestState,
31     ) -> io::Result<()>;
32     fn write_run_finish(&mut self, state: &ConsoleTestState) -> io::Result<bool>;
33 }
34
35 pub(crate) fn write_stderr_delimiter(test_output: &mut Vec<u8>, test_name: &TestName) {
36     match test_output.last() {
37         Some(b'\n') => (),
38         Some(_) => test_output.push(b'\n'),
39         None => (),
40     }
41     writeln!(test_output, "---- {} stderr ----", test_name).unwrap();
42 }