From 6461cde51f1885f3c5e96e26debcfc6d82285b7b Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Fri, 9 Jul 2021 10:58:02 +0200 Subject: [PATCH] Don't capture child process output at all when --no-capture is used --- src/librustdoc/doctest.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs index a9126049b58..5ce7c49278d 100644 --- a/src/librustdoc/doctest.rs +++ b/src/librustdoc/doctest.rs @@ -460,16 +460,22 @@ fn run_test( cmd.current_dir(run_directory); } - match cmd.output() { + let result = if options.nocapture { + cmd.status().map(|status| process::Output { + status, + stdout: Vec::new(), + stderr: Vec::new(), + }) + } else { + cmd.output() + }; + match result { Err(e) => return Err(TestFailure::ExecutionError(e)), Ok(out) => { if should_panic && out.status.success() { return Err(TestFailure::UnexpectedRunPass); } else if !should_panic && !out.status.success() { return Err(TestFailure::ExecutionFailure(out)); - } else if options.nocapture { - io::stdout().write_all(&out.stdout).expect("failed to write stdout"); - io::stderr().write_all(&out.stderr).expect("failed to write stderr"); } } }