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