]> git.proxmox.com Git - rustc.git/blame - library/test/src/formatters/mod.rs
New upstream version 1.70.0+dfsg1
[rustc.git] / library / test / src / formatters / mod.rs
CommitLineData
dfeec247 1use std::{io, io::prelude::Write};
e74abb32
XL
2
3use crate::{
353b0b11 4 console::{ConsoleTestDiscoveryState, ConsoleTestState},
e74abb32 5 test_result::TestResult,
dfeec247
XL
6 time,
7 types::{TestDesc, TestName},
e74abb32 8};
2c00a5a8 9
2c00a5a8 10mod json;
17df50a5 11mod junit;
dfeec247 12mod pretty;
2c00a5a8
XL
13mod terse;
14
2c00a5a8 15pub(crate) use self::json::JsonFormatter;
17df50a5 16pub(crate) use self::junit::JunitFormatter;
dfeec247 17pub(crate) use self::pretty::PrettyFormatter;
2c00a5a8
XL
18pub(crate) use self::terse::TerseFormatter;
19
20pub(crate) trait OutputFormatter {
353b0b11
FG
21 fn write_discovery_start(&mut self) -> io::Result<()>;
22 fn write_test_discovered(&mut self, desc: &TestDesc, test_type: &str) -> io::Result<()>;
23 fn write_discovery_finish(&mut self, state: &ConsoleTestDiscoveryState) -> io::Result<()>;
24
c295e0f8 25 fn write_run_start(&mut self, test_count: usize, shuffle_seed: Option<u64>) -> io::Result<()>;
2c00a5a8
XL
26 fn write_test_start(&mut self, desc: &TestDesc) -> io::Result<()>;
27 fn write_timeout(&mut self, desc: &TestDesc) -> io::Result<()>;
28 fn write_result(
29 &mut self,
30 desc: &TestDesc,
31 result: &TestResult,
e74abb32 32 exec_time: Option<&time::TestExecTime>,
2c00a5a8 33 stdout: &[u8],
e1599b0c 34 state: &ConsoleTestState,
2c00a5a8
XL
35 ) -> io::Result<()>;
36 fn write_run_finish(&mut self, state: &ConsoleTestState) -> io::Result<bool>;
37}
e74abb32
XL
38
39pub(crate) fn write_stderr_delimiter(test_output: &mut Vec<u8>, test_name: &TestName) {
40 match test_output.last() {
41 Some(b'\n') => (),
42 Some(_) => test_output.push(b'\n'),
43 None => (),
44 }
9c376795 45 writeln!(test_output, "---- {test_name} stderr ----").unwrap();
e74abb32 46}