Skip to content

Commit

Permalink
Rollup merge of #95783 - notriddle:notriddle/doctest-signal, r=Guilla…
Browse files Browse the repository at this point in the history
…umeGomez

rustdoc doctest: include signal number in exit status

Related to #95601
  • Loading branch information
m-ou-se authored Apr 12, 2022
2 parents 327caac + 2af843c commit 7644de5
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 15 deletions.
8 changes: 1 addition & 7 deletions src/librustdoc/doctest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1069,13 +1069,7 @@ impl Tester for Collector {
}
}
TestFailure::ExecutionFailure(out) => {
let reason = if let Some(code) = out.status.code() {
format!("exit code {code}")
} else {
String::from("terminated by signal")
};

eprintln!("Test executable failed ({reason}).");
eprintln!("Test executable failed ({reason}).", reason = out.status);

// FIXME(#12309): An unfortunate side-effect of capturing the test
// executable's output is that the relative ordering between the test's
Expand Down
28 changes: 28 additions & 0 deletions src/test/rustdoc-ui/failed-doctest-output-windows.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// only-windows
// There's a parallel generic version of this test for non-windows platforms.

// Issue #51162: A failed doctest was not printing its stdout/stderr
// FIXME: if/when the output of the test harness can be tested on its own, this test should be
// adapted to use that, and that normalize line can go away

// compile-flags:--test --test-args --test-threads=1
// rustc-env:RUST_BACKTRACE=0
// normalize-stdout-test: "src/test/rustdoc-ui" -> "$$DIR"
// normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME"
// failure-status: 101

// doctest fails at runtime
/// ```
/// println!("stdout 1");
/// eprintln!("stderr 1");
/// println!("stdout 2");
/// eprintln!("stderr 2");
/// panic!("oh no");
/// ```
pub struct SomeStruct;

// doctest fails at compile time
/// ```
/// no
/// ```
pub struct OtherStruct;
39 changes: 39 additions & 0 deletions src/test/rustdoc-ui/failed-doctest-output-windows.stdout
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@

running 2 tests
test $DIR/failed-doctest-output-windows.rs - OtherStruct (line 25) ... FAILED
test $DIR/failed-doctest-output-windows.rs - SomeStruct (line 15) ... FAILED

failures:

---- $DIR/failed-doctest-output-windows.rs - OtherStruct (line 25) stdout ----
error[E0425]: cannot find value `no` in this scope
--> $DIR/failed-doctest-output-windows.rs:26:1
|
LL | no
| ^^ not found in this scope

error: aborting due to previous error

For more information about this error, try `rustc --explain E0425`.
Couldn't compile the test.
---- $DIR/failed-doctest-output-windows.rs - SomeStruct (line 15) stdout ----
Test executable failed (exit code: 101).

stdout:
stdout 1
stdout 2

stderr:
stderr 1
stderr 2
thread 'main' panicked at 'oh no', $DIR/failed-doctest-output-windows.rs:7:1
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace



failures:
$DIR/failed-doctest-output-windows.rs - OtherStruct (line 25)
$DIR/failed-doctest-output-windows.rs - SomeStruct (line 15)

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME

3 changes: 3 additions & 0 deletions src/test/rustdoc-ui/failed-doctest-output.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// ignore-windows
// There's a parallel version of this test for Windows.

// Issue #51162: A failed doctest was not printing its stdout/stderr
// FIXME: if/when the output of the test harness can be tested on its own, this test should be
// adapted to use that, and that normalize line can go away
Expand Down
16 changes: 8 additions & 8 deletions src/test/rustdoc-ui/failed-doctest-output.stdout
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@

running 2 tests
test $DIR/failed-doctest-output.rs - OtherStruct (line 22) ... FAILED
test $DIR/failed-doctest-output.rs - SomeStruct (line 12) ... FAILED
test $DIR/failed-doctest-output.rs - OtherStruct (line 25) ... FAILED
test $DIR/failed-doctest-output.rs - SomeStruct (line 15) ... FAILED

failures:

---- $DIR/failed-doctest-output.rs - OtherStruct (line 22) stdout ----
---- $DIR/failed-doctest-output.rs - OtherStruct (line 25) stdout ----
error[E0425]: cannot find value `no` in this scope
--> $DIR/failed-doctest-output.rs:23:1
--> $DIR/failed-doctest-output.rs:26:1
|
LL | no
| ^^ not found in this scope
Expand All @@ -16,8 +16,8 @@ error: aborting due to previous error

For more information about this error, try `rustc --explain E0425`.
Couldn't compile the test.
---- $DIR/failed-doctest-output.rs - SomeStruct (line 12) stdout ----
Test executable failed (exit code 101).
---- $DIR/failed-doctest-output.rs - SomeStruct (line 15) stdout ----
Test executable failed (exit status: 101).

stdout:
stdout 1
Expand All @@ -32,8 +32,8 @@ note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
$DIR/failed-doctest-output.rs - OtherStruct (line 22)
$DIR/failed-doctest-output.rs - SomeStruct (line 12)
$DIR/failed-doctest-output.rs - OtherStruct (line 25)
$DIR/failed-doctest-output.rs - SomeStruct (line 15)

test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in $TIME

0 comments on commit 7644de5

Please sign in to comment.