Skip to content

Commit 5738a5f

Browse files
committed
bootstrap: print test name on failure even with verbose-tests=false
This makes it much easier to know which test failed without having to wait for compiletest to completely finish running. Before: ``` Testing stage0 compiletest suite=ui mode=ui (x86_64-unknown-linux-gnu) running 15274 tests iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 88/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 176/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 264/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 352/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 440/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 528/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiFFiiiiiii ... ``` After: ``` Testing stage0 compiletest suite=ui mode=ui (x86_64-unknown-linux-gnu) running 15274 tests iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 88/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 176/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 264/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 352/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 440/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 528/15274 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii [ui] tests/ui/associated-type-bounds/implied-in-supertrait.rs ... F [ui] tests/ui/associated-type-bounds/return-type-notation/basic.rs#next_with ... F iiiiiiiiiiiii ... ``` This serves a similar use case to the existing RUSTC_TEST_FAIL_FAST, but is on by default and as a result much more discoverable. We should consider unifying RUSTC_TEST_FAIL_FAST with the `--no-fail-fast` flag in the future for consistency and discoverability.
1 parent 4353b1e commit 5738a5f

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/bootstrap/render_tests.rs

+7-4
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ impl<'a> Renderer<'a> {
166166
println!();
167167
}
168168

169-
fn render_test_outcome_terse(&mut self, outcome: Outcome<'_>, _: &TestOutcome) {
169+
fn render_test_outcome_terse(&mut self, outcome: Outcome<'_>, test: &TestOutcome) {
170170
if self.terse_tests_in_line != 0 && self.terse_tests_in_line % TERSE_TESTS_PER_LINE == 0 {
171171
if let Some(total) = self.tests_count {
172172
let total = total.to_string();
@@ -178,7 +178,7 @@ impl<'a> Renderer<'a> {
178178
}
179179

180180
self.terse_tests_in_line += 1;
181-
self.builder.colored_stdout(|stdout| outcome.write_short(stdout)).unwrap();
181+
self.builder.colored_stdout(|stdout| outcome.write_short(stdout, &test.name)).unwrap();
182182
let _ = std::io::stdout().flush();
183183
}
184184

@@ -300,7 +300,7 @@ enum Outcome<'a> {
300300
}
301301

302302
impl Outcome<'_> {
303-
fn write_short(&self, writer: &mut dyn WriteColor) -> Result<(), std::io::Error> {
303+
fn write_short(&self, writer: &mut dyn WriteColor, name: &str) -> Result<(), std::io::Error> {
304304
match self {
305305
Outcome::Ok => {
306306
writer.set_color(&ColorSpec::new().set_fg(Some(Color::Green)))?;
@@ -311,8 +311,11 @@ impl Outcome<'_> {
311311
write!(writer, "b")?;
312312
}
313313
Outcome::Failed => {
314+
// Put failed tests on their own line and include the test name, so that it's faster
315+
// to see which test failed without having to wait for them all to run.
316+
writeln!(writer)?;
314317
writer.set_color(&ColorSpec::new().set_fg(Some(Color::Red)))?;
315-
write!(writer, "F")?;
318+
writeln!(writer, "{name} ... F")?;
316319
}
317320
Outcome::Ignored { .. } => {
318321
writer.set_color(&ColorSpec::new().set_fg(Some(Color::Yellow)))?;

0 commit comments

Comments
 (0)