Skip to content

Commit

Permalink
add --nocapture message, modify relevant tests
Browse files Browse the repository at this point in the history
  • Loading branch information
stupendoussuperpowers committed Aug 8, 2023
1 parent 5641599 commit 294a589
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 23 deletions.
19 changes: 15 additions & 4 deletions src/cargo/ops/cargo_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ fn run_unit_tests(
unit: unit.clone(),
kind: test_kind,
};
report_test_error(ws, &options.compile_opts, &unit_err, e);
report_test_error(ws, test_args, &options.compile_opts, &unit_err, e);
errors.push(unit_err);
if !options.no_fail_fast {
return Err(CliError::code(code));
Expand Down Expand Up @@ -275,7 +275,7 @@ fn run_doc_tests(
unit: unit.clone(),
kind: TestKind::Doctest,
};
report_test_error(ws, &options.compile_opts, &unit_err, e);
report_test_error(ws, test_args, &options.compile_opts, &unit_err, e);
errors.push(unit_err);
if !options.no_fail_fast {
return Err(CliError::code(code));
Expand Down Expand Up @@ -407,6 +407,7 @@ fn no_fail_fast_err(
/// Displays an error on the console about a test failure.
fn report_test_error(
ws: &Workspace<'_>,
test_args: &[&str],
opts: &ops::CompileOptions,
unit_err: &UnitTestError,
test_error: anyhow::Error,
Expand All @@ -420,13 +421,23 @@ fn report_test_error(
let mut err = format_err!("{}, to rerun pass `{}`", which, unit_err.cli_args(ws, opts));
// Don't show "process didn't exit successfully" for simple errors.
// libtest exits with 101 for normal errors.
let is_simple = test_error
let (is_simple, executed) = test_error
.downcast_ref::<ProcessError>()
.and_then(|proc_err| proc_err.code)
.map_or(false, |code| code == 101);
.map_or((false, false), |code| (code == 101, true));

if !is_simple {
err = test_error.context(err);
}

crate::display_error(&err, &mut ws.config().shell());

let harness: bool = unit_err.unit.target.harness();
let nocapture: bool = test_args.contains(&"--nocapture");

if !is_simple && executed && harness && !nocapture {
drop(ws.config().shell().note(
"test exited abnormally; to see the full output pass --nocapture to the harness.",
));
}
}
27 changes: 8 additions & 19 deletions tests/testsuite/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4794,6 +4794,7 @@ error: test failed, to rerun pass `--test t2`
Caused by:
process didn't exit successfully: `[ROOT]/foo/target/debug/deps/t2[..]` (exit [..]: 4)
note: test exited abnormally; to see the full output pass --nocapture to the harness.
",
)
.with_status(4)
Expand Down Expand Up @@ -4825,6 +4826,7 @@ error: test failed, to rerun pass `--test t2`
Caused by:
process didn't exit successfully: `[ROOT]/foo/target/debug/deps/t2[..]` (exit [..]: 4)
note: test exited abnormally; to see the full output pass --nocapture to the harness.
error: 2 targets failed:
`--test t1`
`--test t2`
Expand All @@ -4834,23 +4836,10 @@ error: 2 targets failed:
.run();

p.cargo("test --no-fail-fast -- --nocapture")
.with_stderr(
"\
[FINISHED] test [..]
[RUNNING] tests/t1.rs (target/debug/deps/t1[..])
thread 't' panicked at 'this is a normal error', tests/t1[..]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: test failed, to rerun pass `--test t1`
[RUNNING] tests/t2.rs (target/debug/deps/t2[..])
error: test failed, to rerun pass `--test t2`
Caused by:
process didn't exit successfully: `[ROOT]/foo/target/debug/deps/t2[..]` (exit [..]: 4)
error: 2 targets failed:
`--test t1`
`--test t2`
",
)
.with_status(101)
.run();
.with_stderr_does_not_contain("test exited abnormally; to see the full output pass --nocapture to the harness.")
.with_stderr_contains("[..]thread 't' panicked [..] tests/t1[..]")
.with_stderr_contains("note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace")
.with_stderr_contains("[..]process didn't exit successfully: `[ROOT]/foo/target/debug/deps/t2[..]` (exit [..]: 4)")
.with_status(101)
.run();
}

0 comments on commit 294a589

Please sign in to comment.