Skip to content

Commit d08475a

Browse files
authored
Rollup merge of #148723 - Zalathar:bootstrap-doctest, r=jieyouxu
bootstrap: Render doctest timing reports as text, not JSON These doctest timing reports were added to libtest/rustdoc in #144909, but bootstrap's custom test-output renderer wasn't taught about them, so they were being printed as raw JSON instead. Before: ```text { "type": "report", "total_time": 0.738403958, "compilation_time": 0.731513292 } ``` After: ```text all doctests ran in 0.73s; merged doctests compilation took 0.72s ``` <details> <summary><b>Detailed before/after in context</b></summary> ## Before ```text $ x test rustc_mir_transform --doc Building bootstrap Finished `dev` profile [unoptimized] target(s) in 0.03s Testing stage1 {rustc_mir_transform} (aarch64-apple-darwin) Finished `release` profile [optimized + debuginfo] target(s) in 0.12s Doc-tests rustc_mir_transform running 19 tests iiiiiiiiiiii....... test result: ok. 7 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 3.28ms running 7 tests iiiiiii test result: ok. 0 passed; 0 failed; 7 ignored; 0 measured; 0 filtered out; finished in 403.67µs { "type": "report", "total_time": 0.738403958, "compilation_time": 0.731513292 } finished in 1.505 seconds Build completed successfully in 0:00:01 ``` ## After ```text $ x test rustc_mir_transform --doc Building bootstrap Finished `dev` profile [unoptimized] target(s) in 0.03s Testing stage1 {rustc_mir_transform} (aarch64-apple-darwin) Finished `release` profile [optimized + debuginfo] target(s) in 0.12s Doc-tests rustc_mir_transform running 19 tests iiiiiiiiiiii....... test result: ok. 7 passed; 0 failed; 12 ignored; 0 measured; 0 filtered out; finished in 3.12ms running 7 tests iiiiiii test result: ok. 0 passed; 0 failed; 7 ignored; 0 measured; 0 filtered out; finished in 395.67µs all doctests ran in 0.73s; merged doctests compilation took 0.72s finished in 1.493 seconds Build completed successfully in 0:00:01 ``` </details>
2 parents fb571c9 + 610391f commit d08475a

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/bootstrap/src/utils/render_tests.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,14 @@ impl<'a> Renderer<'a> {
306306
);
307307
}
308308

309+
fn render_report(&self, report: &Report) {
310+
let &Report { total_time, compilation_time } = report;
311+
// Should match `write_merged_doctest_times` in `library/test/src/formatters/pretty.rs`.
312+
println!(
313+
"all doctests ran in {total_time:.2}s; merged doctests compilation took {compilation_time:.2}s"
314+
);
315+
}
316+
309317
fn render_message(&mut self, message: Message) {
310318
match message {
311319
Message::Suite(SuiteMessage::Started { test_count }) => {
@@ -323,6 +331,9 @@ impl<'a> Renderer<'a> {
323331
Message::Suite(SuiteMessage::Failed(outcome)) => {
324332
self.render_suite_outcome(Outcome::Failed, &outcome);
325333
}
334+
Message::Report(report) => {
335+
self.render_report(&report);
336+
}
326337
Message::Bench(outcome) => {
327338
// The formatting for benchmarks doesn't replicate 1:1 the formatting libtest
328339
// outputs, mostly because libtest's formatting is broken in terse mode, which is
@@ -435,6 +446,7 @@ enum Message {
435446
Suite(SuiteMessage),
436447
Test(TestMessage),
437448
Bench(BenchOutcome),
449+
Report(Report),
438450
}
439451

440452
#[derive(serde_derive::Deserialize)]
@@ -481,3 +493,10 @@ struct TestOutcome {
481493
stdout: Option<String>,
482494
message: Option<String>,
483495
}
496+
497+
/// Emitted when running doctests.
498+
#[derive(serde_derive::Deserialize)]
499+
struct Report {
500+
total_time: f64,
501+
compilation_time: f64,
502+
}

0 commit comments

Comments
 (0)