diff options
| author | bors <bors@rust-lang.org> | 2025-04-27 07:43:46 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-04-27 07:43:46 +0000 |
| commit | 8947e167e58c5c4f23cae94585301f8eb90d93ea (patch) | |
| tree | 1375893f307da0c510a518669ec736c767bfbe78 /src | |
| parent | 496145b9cc023aef4bb1f16c0964a53d0da36c88 (diff) | |
| parent | c44068b91606522556d636d5010bb85f48fbb538 (diff) | |
Auto merge of #140291 - GuillaumeGomez:doctest-2024-stdout, r=notriddle
Correctly display stdout and stderr in case a doctest is failing Fixes https://github.com/rust-lang/rust/issues/140289. Since the doctest is actually running itself, we need to handle the output directly inside it. cc `@fmease` r? `@notriddle`
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustdoc/doctest/runner.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/librustdoc/doctest/runner.rs b/src/librustdoc/doctest/runner.rs index 784d628805d..39a4f23560a 100644 --- a/src/librustdoc/doctest/runner.rs +++ b/src/librustdoc/doctest/runner.rs @@ -131,7 +131,22 @@ mod __doctest_mod {{ .output() .expect(\"failed to run command\"); if !out.status.success() {{ - eprint!(\"{{}}\", String::from_utf8_lossy(&out.stderr)); + if let Some(code) = out.status.code() {{ + eprintln!(\"Test executable failed (exit status: {{code}}).\"); + }} else {{ + eprintln!(\"Test executable failed (terminated by signal).\"); + }} + if !out.stdout.is_empty() || !out.stderr.is_empty() {{ + eprintln!(); + }} + if !out.stdout.is_empty() {{ + eprintln!(\"stdout:\"); + eprintln!(\"{{}}\", String::from_utf8_lossy(&out.stdout)); + }} + if !out.stderr.is_empty() {{ + eprintln!(\"stderr:\"); + eprintln!(\"{{}}\", String::from_utf8_lossy(&out.stderr)); + }} ExitCode::FAILURE }} else {{ ExitCode::SUCCESS |
