From a91e97c06c778b84663cfe4f2871b868d275a137 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 3 Apr 2025 17:20:45 +0200 Subject: [PATCH 1/3] Fix 2024 edition doctest panic output --- src/librustdoc/doctest/runner.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/librustdoc/doctest/runner.rs b/src/librustdoc/doctest/runner.rs index f891505d2a609..09a3224a3c3fe 100644 --- a/src/librustdoc/doctest/runner.rs +++ b/src/librustdoc/doctest/runner.rs @@ -113,6 +113,7 @@ impl DocTestRunner { mod __doctest_mod {{ use std::sync::OnceLock; use std::path::PathBuf; + use std::process::ExitCode; pub static BINARY_PATH: OnceLock = OnceLock::new(); pub const RUN_OPTION: &str = \"RUSTDOC_DOCTEST_RUN_NB_TEST\"; @@ -123,16 +124,17 @@ mod __doctest_mod {{ }} #[allow(unused)] - pub fn doctest_runner(bin: &std::path::Path, test_nb: usize) -> Result<(), String> {{ + pub fn doctest_runner(bin: &std::path::Path, test_nb: usize) -> ExitCode {{ let out = std::process::Command::new(bin) .env(self::RUN_OPTION, test_nb.to_string()) .args(std::env::args().skip(1).collect::>()) .output() .expect(\"failed to run command\"); if !out.status.success() {{ - Err(String::from_utf8_lossy(&out.stderr).to_string()) + eprintln!(\"{{}}\", String::from_utf8_lossy(&out.stderr)); + ExitCode::FAILURE }} else {{ - Ok(()) + ExitCode::SUCCESS }} }} }} From fff2484700bb7d1fa320a666109d1868767dfa6a Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 3 Apr 2025 17:21:03 +0200 Subject: [PATCH 2/3] Add regression test for #137970 --- .../edition-2024-doctest-error-output.rs | 12 +++++++ .../edition-2024-doctest-error-output.stdout | 32 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tests/rustdoc-ui/edition-2024-doctest-error-output.rs create mode 100644 tests/rustdoc-ui/edition-2024-doctest-error-output.stdout diff --git a/tests/rustdoc-ui/edition-2024-doctest-error-output.rs b/tests/rustdoc-ui/edition-2024-doctest-error-output.rs new file mode 100644 index 0000000000000..cabe5d1ae6eae --- /dev/null +++ b/tests/rustdoc-ui/edition-2024-doctest-error-output.rs @@ -0,0 +1,12 @@ +// This is a regression test for . +// The output must look nice and not like a `Debug` display of a `String`. + +//@ edition: 2024 +//@ compile-flags: --test +//@ normalize-stdout: "tests/rustdoc-ui/doctest" -> "$$DIR" +//@ normalize-stdout: "finished in \d+\.\d+s" -> "finished in $$TIME" +//@ failure-status: 101 + +//! ```rust +//! assert_eq!(2 + 2, 5); +//! ``` diff --git a/tests/rustdoc-ui/edition-2024-doctest-error-output.stdout b/tests/rustdoc-ui/edition-2024-doctest-error-output.stdout new file mode 100644 index 0000000000000..5c4de44c21ab3 --- /dev/null +++ b/tests/rustdoc-ui/edition-2024-doctest-error-output.stdout @@ -0,0 +1,32 @@ + +running 1 test +test tests/rustdoc-ui/edition-2024-doctest-error-output.rs - (line 10) ... FAILED + +failures: + +---- tests/rustdoc-ui/edition-2024-doctest-error-output.rs - (line 10) stdout ---- + +thread 'main' panicked at /tmp/rustdoctestSZq9aS/doctest_bundle_2024.rs:6:1: +assertion `left == right` failed + left: 4 + right: 5 +stack backtrace: + 0: __rustc::rust_begin_unwind + 1: core::panicking::panic_fmt + 2: core::panicking::assert_failed_inner + 3: core::panicking::assert_failed + 4: doctest_bundle_2024::__doctest_0::main + 5: doctest_bundle_2024::__doctest_0::__main_fn + 6: doctest_runner_2024::__doctest_0::TEST::{{closure}} + 7: core::ops::function::FnOnce::call_once + 8: doctest_runner_2024::main + 9: core::ops::function::FnOnce::call_once +note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. + + + +failures: + tests/rustdoc-ui/edition-2024-doctest-error-output.rs - (line 10) + +test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME + From f9927ee042f7d7418fbb64082272ce1feff4d895 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 3 Apr 2025 17:58:59 +0200 Subject: [PATCH 3/3] Use `eprint!` instead of `eprintln!` --- src/librustdoc/doctest/runner.rs | 2 +- .../edition-2024-error-output.rs} | 2 ++ .../doctest/edition-2024-error-output.stdout | 20 ++++++++++++ .../edition-2024-doctest-error-output.stdout | 32 ------------------- 4 files changed, 23 insertions(+), 33 deletions(-) rename tests/rustdoc-ui/{edition-2024-doctest-error-output.rs => doctest/edition-2024-error-output.rs} (80%) create mode 100644 tests/rustdoc-ui/doctest/edition-2024-error-output.stdout delete mode 100644 tests/rustdoc-ui/edition-2024-doctest-error-output.stdout diff --git a/src/librustdoc/doctest/runner.rs b/src/librustdoc/doctest/runner.rs index 09a3224a3c3fe..5fd577e353155 100644 --- a/src/librustdoc/doctest/runner.rs +++ b/src/librustdoc/doctest/runner.rs @@ -131,7 +131,7 @@ mod __doctest_mod {{ .output() .expect(\"failed to run command\"); if !out.status.success() {{ - eprintln!(\"{{}}\", String::from_utf8_lossy(&out.stderr)); + eprint!(\"{{}}\", String::from_utf8_lossy(&out.stderr)); ExitCode::FAILURE }} else {{ ExitCode::SUCCESS diff --git a/tests/rustdoc-ui/edition-2024-doctest-error-output.rs b/tests/rustdoc-ui/doctest/edition-2024-error-output.rs similarity index 80% rename from tests/rustdoc-ui/edition-2024-doctest-error-output.rs rename to tests/rustdoc-ui/doctest/edition-2024-error-output.rs index cabe5d1ae6eae..82a85debcd191 100644 --- a/tests/rustdoc-ui/edition-2024-doctest-error-output.rs +++ b/tests/rustdoc-ui/doctest/edition-2024-error-output.rs @@ -4,7 +4,9 @@ //@ edition: 2024 //@ compile-flags: --test //@ normalize-stdout: "tests/rustdoc-ui/doctest" -> "$$DIR" +//@ normalize-stdout: "panicked at .+rs:" -> "panicked at $$TMP:" //@ normalize-stdout: "finished in \d+\.\d+s" -> "finished in $$TIME" +//@ rustc-env:RUST_BACKTRACE=0 //@ failure-status: 101 //! ```rust diff --git a/tests/rustdoc-ui/doctest/edition-2024-error-output.stdout b/tests/rustdoc-ui/doctest/edition-2024-error-output.stdout new file mode 100644 index 0000000000000..8f056a5f703ed --- /dev/null +++ b/tests/rustdoc-ui/doctest/edition-2024-error-output.stdout @@ -0,0 +1,20 @@ + +running 1 test +test $DIR/edition-2024-error-output.rs - (line 12) ... FAILED + +failures: + +---- $DIR/edition-2024-error-output.rs - (line 12) stdout ---- + +thread 'main' panicked at $TMP:6:1: +assertion `left == right` failed + left: 4 + right: 5 +note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace + + +failures: + $DIR/edition-2024-error-output.rs - (line 12) + +test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME + diff --git a/tests/rustdoc-ui/edition-2024-doctest-error-output.stdout b/tests/rustdoc-ui/edition-2024-doctest-error-output.stdout deleted file mode 100644 index 5c4de44c21ab3..0000000000000 --- a/tests/rustdoc-ui/edition-2024-doctest-error-output.stdout +++ /dev/null @@ -1,32 +0,0 @@ - -running 1 test -test tests/rustdoc-ui/edition-2024-doctest-error-output.rs - (line 10) ... FAILED - -failures: - ----- tests/rustdoc-ui/edition-2024-doctest-error-output.rs - (line 10) stdout ---- - -thread 'main' panicked at /tmp/rustdoctestSZq9aS/doctest_bundle_2024.rs:6:1: -assertion `left == right` failed - left: 4 - right: 5 -stack backtrace: - 0: __rustc::rust_begin_unwind - 1: core::panicking::panic_fmt - 2: core::panicking::assert_failed_inner - 3: core::panicking::assert_failed - 4: doctest_bundle_2024::__doctest_0::main - 5: doctest_bundle_2024::__doctest_0::__main_fn - 6: doctest_runner_2024::__doctest_0::TEST::{{closure}} - 7: core::ops::function::FnOnce::call_once - 8: doctest_runner_2024::main - 9: core::ops::function::FnOnce::call_once -note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. - - - -failures: - tests/rustdoc-ui/edition-2024-doctest-error-output.rs - (line 10) - -test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME -