Rollup merge of #62600 - emmericp:libtest-add-show-output, r=gnzlbg
libtest: add --show-output flag to print stdout of successful tests This pull request adds a new flag `--show-output` for tests to show the output of successful tests. For most formatters this was already supported just not exposed via the CLI (apparently only used by `librustdoc`). I've also added support for this option in the JSON formatter. This kind of fixes https://github.com/rust-lang/rust/issues/54669 which wants `--format json` to work with `--nocapture`, which is... well, impossible. What this issue really calls for is `--show-output` as implemented here.
This commit is contained in:
@@ -274,7 +274,7 @@ impl Options {
|
||||
|
||||
// The default console test runner. It accepts the command line
|
||||
// arguments and a vector of test_descs.
|
||||
pub fn test_main(args: &[String], tests: Vec<TestDescAndFn>, options: Options) {
|
||||
pub fn test_main(args: &[String], tests: Vec<TestDescAndFn>, options: Option<Options>) {
|
||||
let mut opts = match parse_opts(args) {
|
||||
Some(Ok(o)) => o,
|
||||
Some(Err(msg)) => {
|
||||
@@ -283,8 +283,9 @@ pub fn test_main(args: &[String], tests: Vec<TestDescAndFn>, options: Options) {
|
||||
}
|
||||
None => return,
|
||||
};
|
||||
|
||||
opts.options = options;
|
||||
if let Some(options) = options {
|
||||
opts.options = options;
|
||||
}
|
||||
if opts.list {
|
||||
if let Err(e) = list_tests_console(&opts, tests) {
|
||||
eprintln!("error: io error when listing tests: {:?}", e);
|
||||
@@ -325,7 +326,7 @@ pub fn test_main_static(tests: &[&TestDescAndFn]) {
|
||||
_ => panic!("non-static tests passed to test::test_main_static"),
|
||||
})
|
||||
.collect();
|
||||
test_main(&args, owned_tests, Options::new())
|
||||
test_main(&args, owned_tests, None)
|
||||
}
|
||||
|
||||
/// Invoked when unit tests terminate. Should panic if the unit
|
||||
@@ -448,6 +449,11 @@ fn optgroups() -> getopts::Options {
|
||||
json = Output a json document",
|
||||
"pretty|terse|json",
|
||||
)
|
||||
.optflag(
|
||||
"",
|
||||
"show-output",
|
||||
"Show captured stdout of successful tests"
|
||||
)
|
||||
.optopt(
|
||||
"Z",
|
||||
"",
|
||||
@@ -647,7 +653,7 @@ pub fn parse_opts(args: &[String]) -> Option<OptRes> {
|
||||
format,
|
||||
test_threads,
|
||||
skip: matches.opt_strs("skip"),
|
||||
options: Options::new(),
|
||||
options: Options::new().display_output(matches.opt_present("show-output")),
|
||||
};
|
||||
|
||||
Some(Ok(test_opts))
|
||||
@@ -880,7 +886,7 @@ pub fn run_tests_console(opts: &TestOpts, tests: Vec<TestDescAndFn>) -> io::Resu
|
||||
TeTimeout(ref test) => out.write_timeout(test),
|
||||
TeResult(test, result, stdout) => {
|
||||
st.write_log_result(&test, &result)?;
|
||||
out.write_result(&test, &result, &*stdout)?;
|
||||
out.write_result(&test, &result, &*stdout, &st)?;
|
||||
match result {
|
||||
TrOk => {
|
||||
st.passed += 1;
|
||||
|
||||
Reference in New Issue
Block a user