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