Skip to content

Commit 2f3a770

Browse files
committed
Allow hiding some revisions from command line output
1 parent 333f8a3 commit 2f3a770

File tree

11 files changed

+54
-98
lines changed

11 files changed

+54
-98
lines changed

src/build_manager.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ use std::{
66
sync::{Arc, OnceLock, RwLock},
77
};
88

9-
use crate::{status_emitter::StatusEmitter, Config, Errored};
9+
use crate::{
10+
status_emitter::{RevisionStyle, StatusEmitter},
11+
Config, Errored,
12+
};
1013

1114
/// A build shared between all tests of the same `BuildManager`
1215
pub trait Build {
@@ -83,7 +86,7 @@ impl<'a> BuildManager<'a> {
8386
let build = self
8487
.status_emitter
8588
.register_test(what.description().into())
86-
.for_revision("");
89+
.for_revision("", RevisionStyle::Parent);
8790
let res = what.build(self).map_err(|e| err = Some(e));
8891
build.done(
8992
&res.as_ref()

src/custom_flags/run.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ use spanned::Spanned;
55
use std::process::{Command, Output};
66

77
use crate::{
8-
build_manager::BuildManager, display, per_test_config::TestConfig, Error, Errored, TestOk,
9-
TestRun,
8+
build_manager::BuildManager, display, per_test_config::TestConfig,
9+
status_emitter::RevisionStyle, Error, Errored, TestOk, TestRun,
1010
};
1111

1212
use super::Flag;
@@ -37,7 +37,7 @@ impl Flag for Run {
3737
config: config.config.clone(),
3838
comments: config.comments,
3939
aux_dir: config.aux_dir,
40-
status: config.status.for_revision(&revision),
40+
status: config.status.for_revision(&revision, RevisionStyle::Show),
4141
};
4242
cmd.arg("--print").arg("file-names");
4343
let output = cmd.output().unwrap();

src/dependencies.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use crate::{
1515
build_manager::{Build, BuildManager},
1616
custom_flags::Flag,
1717
per_test_config::TestConfig,
18+
status_emitter::RevisionStyle,
1819
test_result::Errored,
1920
CommandBuilder, Config, OutputConflictHandling, TestOk,
2021
};
@@ -390,9 +391,10 @@ impl Flag for DependencyBuilder {
390391
config: &TestConfig<'_>,
391392
build_manager: &BuildManager<'_>,
392393
) -> Result<(), Errored> {
393-
let status = config
394-
.status
395-
.for_revision("waiting for dependencies to finish building");
394+
let status = config.status.for_revision(
395+
"waiting for dependencies to finish building",
396+
RevisionStyle::Quiet,
397+
);
396398
match build_manager.build(self.clone()) {
397399
Ok(extra_args) => {
398400
cmd.args(extra_args);

src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ pub use core::CrateType;
1818
pub use filter::Match;
1919
use per_test_config::TestConfig;
2020
use spanned::Spanned;
21+
use status_emitter::RevisionStyle;
2122
use status_emitter::{StatusEmitter, TestStatus};
2223
use std::collections::VecDeque;
2324
use std::path::Path;
@@ -326,7 +327,7 @@ fn parse_and_test_file(
326327
let revisions = comments.revisions.as_deref().unwrap_or(EMPTY);
327328
let mut runs = vec![];
328329
for revision in revisions {
329-
let status = status.for_revision(revision);
330+
let status = status.for_revision(revision, RevisionStyle::Show);
330331
// Ignore file if only/ignore rules do (not) apply
331332
if !config.test_file_conditions(&comments, revision) {
332333
runs.push(TestRun {

src/status_emitter.rs

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,22 @@ pub trait StatusEmitter: Sync + RefUnwindSafe {
4343
) -> Box<dyn Summary>;
4444
}
4545

46+
/// Some configuration options for revisions
47+
#[derive(Debug, Clone, Copy)]
48+
pub enum RevisionStyle {
49+
/// Things like dependencies or aux files building are noise in non-interactif mode
50+
/// and thus silenced.
51+
Quiet,
52+
/// Always show them, even if rendering to a file
53+
Show,
54+
/// The parent, only show in indicatif mode and on failure
55+
Parent,
56+
}
57+
4658
/// Information about a specific test run.
4759
pub trait TestStatus: Send + Sync + RefUnwindSafe {
4860
/// Create a copy of this test for a new revision.
49-
fn for_revision(&self, revision: &str) -> Box<dyn TestStatus>;
61+
fn for_revision(&self, revision: &str, style: RevisionStyle) -> Box<dyn TestStatus>;
5062

5163
/// Create a copy of this test for a new path.
5264
fn for_path(&self, path: &Path) -> Box<dyn TestStatus>;
@@ -108,7 +120,7 @@ pub struct SilentStatus {
108120
}
109121

110122
impl TestStatus for SilentStatus {
111-
fn for_revision(&self, revision: &str) -> Box<dyn TestStatus> {
123+
fn for_revision(&self, revision: &str, _style: RevisionStyle) -> Box<dyn TestStatus> {
112124
Box::new(SilentStatus {
113125
revision: revision.into(),
114126
path: self.path.clone(),
@@ -286,6 +298,7 @@ struct TextTest {
286298
path: PathBuf,
287299
revision: String,
288300
first: AtomicBool,
301+
style: RevisionStyle,
289302
}
290303

291304
impl TextTest {
@@ -313,8 +326,18 @@ impl TestStatus for TextTest {
313326
let old_msg = self.msg();
314327
let msg = format!("... {result}");
315328
if ProgressDrawTarget::stdout().is_hidden() {
316-
println!("{old_msg} {msg}");
317-
std::io::stdout().flush().unwrap();
329+
match self.style {
330+
RevisionStyle::Quiet => {}
331+
RevisionStyle::Show | RevisionStyle::Parent => {
332+
let revision = if self.revision.is_empty() {
333+
String::new()
334+
} else {
335+
format!(" (revision `{}`)", self.revision)
336+
};
337+
println!("{}{revision} {msg}", display(&self.path));
338+
std::io::stdout().flush().unwrap();
339+
}
340+
}
318341
}
319342
self.text.sender.send(Msg::Pop(old_msg, Some(msg))).unwrap();
320343
}
@@ -360,7 +383,7 @@ impl TestStatus for TextTest {
360383
&self.path
361384
}
362385

363-
fn for_revision(&self, revision: &str) -> Box<dyn TestStatus> {
386+
fn for_revision(&self, revision: &str, style: RevisionStyle) -> Box<dyn TestStatus> {
364387
if !self.first.swap(false, std::sync::atomic::Ordering::Relaxed)
365388
&& self.text.is_quiet_output()
366389
{
@@ -372,6 +395,7 @@ impl TestStatus for TextTest {
372395
path: self.path.clone(),
373396
revision: revision.to_owned(),
374397
first: AtomicBool::new(false),
398+
style,
375399
};
376400
self.text.sender.send(Msg::Push(text.msg())).unwrap();
377401
Box::new(text)
@@ -383,6 +407,7 @@ impl TestStatus for TextTest {
383407
path: path.to_path_buf(),
384408
revision: self.revision.clone(),
385409
first: AtomicBool::new(false),
410+
style: RevisionStyle::Show,
386411
};
387412
self.text.sender.send(Msg::Push(text.msg())).unwrap();
388413
Box::new(text)
@@ -403,6 +428,7 @@ impl StatusEmitter for Text {
403428
path,
404429
revision: String::new(),
405430
first: AtomicBool::new(true),
431+
style: RevisionStyle::Parent,
406432
})
407433
}
408434

@@ -904,7 +930,7 @@ impl<const GROUP: bool> TestStatus for PathAndRev<GROUP> {
904930
&self.path
905931
}
906932

907-
fn for_revision(&self, revision: &str) -> Box<dyn TestStatus> {
933+
fn for_revision(&self, revision: &str, _style: RevisionStyle) -> Box<dyn TestStatus> {
908934
Box::new(Self {
909935
path: self.path.clone(),
910936
revision: revision.to_owned(),
@@ -1035,8 +1061,11 @@ impl<T: TestStatus, U: TestStatus> TestStatus for (T, U) {
10351061
rev
10361062
}
10371063

1038-
fn for_revision(&self, revision: &str) -> Box<dyn TestStatus> {
1039-
Box::new((self.0.for_revision(revision), self.1.for_revision(revision)))
1064+
fn for_revision(&self, revision: &str, style: RevisionStyle) -> Box<dyn TestStatus> {
1065+
Box::new((
1066+
self.0.for_revision(revision, style),
1067+
self.1.for_revision(revision, style),
1068+
))
10401069
}
10411070

10421071
fn for_path(&self, path: &Path) -> Box<dyn TestStatus> {
@@ -1079,8 +1108,8 @@ impl<T: TestStatus + ?Sized> TestStatus for Box<T> {
10791108
(**self).revision()
10801109
}
10811110

1082-
fn for_revision(&self, revision: &str) -> Box<dyn TestStatus> {
1083-
(**self).for_revision(revision)
1111+
fn for_revision(&self, revision: &str, style: RevisionStyle) -> Box<dyn TestStatus> {
1112+
(**self).for_revision(revision, style)
10841113
}
10851114

10861115
fn for_path(&self, path: &Path) -> Box<dyn TestStatus> {

tests/integrations/basic-bin/Cargo.stdout

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ running 0 tests
44
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished
55

66
Building dependencies ... ok
7-
tests/actual_tests/foomp.rs (revision `waiting for dependencies to finish building`) ... ok
87
tests/actual_tests/foomp.rs ... ok
98

109
test result: ok. 1 passed

tests/integrations/basic-fail-mode/Cargo.stdout

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ running 3 tests
99
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished
1010

1111
Building dependencies ... ok
12-
tests/actual_tests/foomp.rs (revision `waiting for dependencies to finish building`) ... ok
1312
tests/actual_tests/foomp.rs ... ok
1413

1514
test result: ok. 1 passed

tests/integrations/basic-fail/Cargo.stdout

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,19 @@ running 0 tests
44
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished
55

66
Building dependencies ... ok
7-
tests/actual_tests/bad_pattern.rs (revision `waiting for dependencies to finish building`) ... ok
87
tests/actual_tests/bad_pattern.rs ... FAILED
9-
tests/actual_tests/executable.rs (revision `waiting for dependencies to finish building`) ... ok
108
tests/actual_tests/executable.rs (revision `run`) ... FAILED
119
tests/actual_tests/executable.rs ... ok
12-
tests/actual_tests/executable_compile_err.rs (revision `waiting for dependencies to finish building`) ... ok
1310
tests/actual_tests/executable_compile_err.rs ... FAILED
14-
tests/actual_tests/exit_code_fail.rs (revision `waiting for dependencies to finish building`) ... ok
1511
tests/actual_tests/exit_code_fail.rs ... FAILED
1612
tests/actual_tests/filters.rs ... FAILED
17-
tests/actual_tests/foomp.rs (revision `waiting for dependencies to finish building`) ... ok
1813
tests/actual_tests/foomp.rs ... FAILED
19-
tests/actual_tests/foomp2.rs (revision `waiting for dependencies to finish building`) ... ok
2014
tests/actual_tests/foomp2.rs ... FAILED
2115
tests/actual_tests/inline_chain.rs ... FAILED
2216
tests/actual_tests/joined_wrong_order.rs ... FAILED
2317
tests/actual_tests/lone_joined_pattern.rs ... FAILED
2418
tests/actual_tests/pattern_too_many_arrow.rs ... FAILED
2519
tests/actual_tests/pattern_too_many_arrow_above.rs ... FAILED
26-
tests/actual_tests/rustc_ice.rs (revision `waiting for dependencies to finish building`) ... ok
2720
tests/actual_tests/rustc_ice.rs ... FAILED
2821
tests/actual_tests/touching_above_below.rs ... FAILED
2922
tests/actual_tests/touching_above_below_chain.rs ... FAILED
@@ -462,90 +455,58 @@ FAILURES:
462455
test result: FAIL. 15 failed; 1 passed
463456

464457
Building dependencies ... ok
465-
tests/actual_tests_bless/abort.rs (revision `waiting for dependencies to finish building`) ... ok
466458
tests/actual_tests_bless/abort.rs (revision `run`) ... FAILED
467459
tests/actual_tests_bless/abort.rs ... ok
468460
tests/actual_tests_bless/aux_build_not_found.rs ... FAILED
469461
tests/actual_tests_bless/aux_proc_macro_misuse.rs ... FAILED
470462
Building aux file tests/actual_tests_bless/auxiliary/the_proc_macro.rs ... ok
471-
tests/actual_tests_bless/aux_proc_macro_no_main.rs (revision `waiting for dependencies to finish building`) ... ok
472463
tests/actual_tests_bless/aux_proc_macro_no_main.rs ... FAILED
473464
tests/actual_tests_bless/compile_flags_quotes.rs ... FAILED
474465
tests/actual_tests_bless/compiletest-rs-command.rs ... FAILED
475-
tests/actual_tests_bless/failing_executable.rs (revision `waiting for dependencies to finish building`) ... ok
476466
tests/actual_tests_bless/failing_executable.rs (revision `run`) ... FAILED
477467
tests/actual_tests_bless/failing_executable.rs ... ok
478468
Building aux file tests/actual_tests_bless/auxiliary/foomp.rs ... ok
479-
tests/actual_tests_bless/foomp_aux.rs (revision `waiting for dependencies to finish building`) ... ok
480469
tests/actual_tests_bless/foomp_aux.rs ... ok
481470
Building aux file tests/actual_tests_bless/auxiliary/nested.rs ... ok
482-
tests/actual_tests_bless/nested_aux.rs (revision `waiting for dependencies to finish building`) ... ok
483471
tests/actual_tests_bless/nested_aux.rs ... ok
484-
tests/actual_tests_bless/no_main.rs (revision `waiting for dependencies to finish building`) ... ok
485472
tests/actual_tests_bless/no_main.rs ... FAILED
486-
tests/actual_tests_bless/no_main_manual.rs (revision `waiting for dependencies to finish building`) ... ok
487473
tests/actual_tests_bless/no_main_manual.rs ... FAILED
488-
tests/actual_tests_bless/no_test.rs (revision `waiting for dependencies to finish building`) ... ok
489474
tests/actual_tests_bless/no_test.rs ... FAILED
490475
tests/actual_tests_bless/non_top_level_configs.rs ... FAILED
491-
tests/actual_tests_bless/pass.rs (revision `waiting for dependencies to finish building`) ... ok
492476
tests/actual_tests_bless/pass.rs ... ok
493-
tests/actual_tests_bless/pass_with_annotation.rs (revision `waiting for dependencies to finish building`) ... ok
494477
tests/actual_tests_bless/pass_with_annotation.rs ... FAILED
495478
tests/actual_tests_bless/revised_revision.rs ... FAILED
496-
tests/actual_tests_bless/revisioned_executable.rs (revision `waiting for dependencies to finish building`) ... ok
497-
tests/actual_tests_bless/revisioned_executable.rs (revision `waiting for dependencies to finish building`) ... ok
498479
tests/actual_tests_bless/revisioned_executable.rs (revision `run.run`) ... ok
499480
tests/actual_tests_bless/revisioned_executable.rs (revision `run`) ... ok
500481
tests/actual_tests_bless/revisioned_executable.rs (revision `panic.run`) ... FAILED
501482
tests/actual_tests_bless/revisioned_executable.rs (revision `panic`) ... ok
502-
tests/actual_tests_bless/revisioned_executable_panic.rs (revision `waiting for dependencies to finish building`) ... ok
503-
tests/actual_tests_bless/revisioned_executable_panic.rs (revision `waiting for dependencies to finish building`) ... ok
504483
tests/actual_tests_bless/revisioned_executable_panic.rs (revision `run.run`) ... FAILED
505484
tests/actual_tests_bless/revisioned_executable_panic.rs (revision `run`) ... ok
506485
tests/actual_tests_bless/revisioned_executable_panic.rs (revision `panic.run`) ... ok
507486
tests/actual_tests_bless/revisioned_executable_panic.rs (revision `panic`) ... ok
508-
tests/actual_tests_bless/revisions.rs (revision `waiting for dependencies to finish building`) ... ok
509-
tests/actual_tests_bless/revisions.rs (revision `waiting for dependencies to finish building`) ... ok
510487
tests/actual_tests_bless/revisions.rs (revision `foo`) ... ok
511488
tests/actual_tests_bless/revisions.rs (revision `bar`) ... ok
512-
tests/actual_tests_bless/revisions_bad.rs (revision `waiting for dependencies to finish building`) ... ok
513-
tests/actual_tests_bless/revisions_bad.rs (revision `waiting for dependencies to finish building`) ... ok
514489
tests/actual_tests_bless/revisions_bad.rs (revision `foo`) ... ok
515490
tests/actual_tests_bless/revisions_bad.rs (revision `bar`) ... FAILED
516491
tests/actual_tests_bless/revisions_filter.rs (revision `foo`) ... ignored (in-test comment)
517492
tests/actual_tests_bless/revisions_filter.rs (revision `bar`) ... ignored (in-test comment)
518-
tests/actual_tests_bless/revisions_filter2.rs (revision `waiting for dependencies to finish building`) ... ok
519493
tests/actual_tests_bless/revisions_filter2.rs (revision `foo`) ... ignored (in-test comment)
520494
tests/actual_tests_bless/revisions_filter2.rs (revision `bar`) ... ok
521-
tests/actual_tests_bless/revisions_multiple_per_annotation.rs (revision `waiting for dependencies to finish building`) ... ok
522-
tests/actual_tests_bless/revisions_multiple_per_annotation.rs (revision `waiting for dependencies to finish building`) ... ok
523495
tests/actual_tests_bless/revisions_multiple_per_annotation.rs (revision `foo`) ... ok
524496
tests/actual_tests_bless/revisions_multiple_per_annotation.rs (revision `bar`) ... ok
525-
tests/actual_tests_bless/revisions_same_everywhere.rs (revision `waiting for dependencies to finish building`) ... ok
526-
tests/actual_tests_bless/revisions_same_everywhere.rs (revision `waiting for dependencies to finish building`) ... ok
527497
tests/actual_tests_bless/revisions_same_everywhere.rs (revision `foo`) ... ok
528498
tests/actual_tests_bless/revisions_same_everywhere.rs (revision `bar`) ... ok
529-
tests/actual_tests_bless/run_panic.rs (revision `waiting for dependencies to finish building`) ... ok
530499
tests/actual_tests_bless/run_panic.rs (revision `run`) ... ok
531500
tests/actual_tests_bless/run_panic.rs ... ok
532-
tests/actual_tests_bless/rustfix-fail-revisions.rs (revision `waiting for dependencies to finish building`) ... ok
533-
tests/actual_tests_bless/rustfix-fail-revisions.a.fixed (revision `waiting for dependencies to finish building`) ... ok
534-
tests/actual_tests_bless/rustfix-fail-revisions.rs (revision `waiting for dependencies to finish building`) ... ok
535-
tests/actual_tests_bless/rustfix-fail-revisions.b.fixed (revision `waiting for dependencies to finish building`) ... ok
536501
tests/actual_tests_bless/rustfix-fail-revisions.a.fixed (revision `a`) ... FAILED
537502
tests/actual_tests_bless/rustfix-fail-revisions.rs (revision `a`) ... ok
538503
tests/actual_tests_bless/rustfix-fail-revisions.b.fixed (revision `b`) ... FAILED
539504
tests/actual_tests_bless/rustfix-fail-revisions.rs (revision `b`) ... ok
540-
tests/actual_tests_bless/rustfix-fail.rs (revision `waiting for dependencies to finish building`) ... ok
541-
tests/actual_tests_bless/rustfix-fail.fixed (revision `waiting for dependencies to finish building`) ... ok
542505
tests/actual_tests_bless/rustfix-fail.fixed ... FAILED
543506
tests/actual_tests_bless/rustfix-fail.rs ... ok
544-
tests/actual_tests_bless/unicode.rs (revision `waiting for dependencies to finish building`) ... ok
545507
tests/actual_tests_bless/unicode.rs ... FAILED
546508
tests/actual_tests_bless/unknown_revision.rs ... FAILED
547509
tests/actual_tests_bless/unknown_revision2.rs ... FAILED
548-
tests/actual_tests_bless/wrong_diagnostic_code.rs (revision `waiting for dependencies to finish building`) ... ok
549510
tests/actual_tests_bless/wrong_diagnostic_code.rs ... FAILED
550511

551512
FAILED TEST: tests/actual_tests_bless/abort.rs (revision `run`)
@@ -1120,18 +1081,10 @@ FAILURES:
11201081
test result: FAIL. 23 failed; 24 passed; 3 ignored
11211082

11221083
Building dependencies ... ok
1123-
tests/actual_tests_bless_yolo/revisions_bad.rs (revision `waiting for dependencies to finish building`) ... ok
1124-
tests/actual_tests_bless_yolo/revisions_bad.rs (revision `waiting for dependencies to finish building`) ... ok
11251084
tests/actual_tests_bless_yolo/revisions_bad.rs (revision `foo`) ... ok
11261085
tests/actual_tests_bless_yolo/revisions_bad.rs (revision `bar`) ... ok
1127-
tests/actual_tests_bless_yolo/rustfix-maybe-incorrect.rs (revision `waiting for dependencies to finish building`) ... ok
1128-
tests/actual_tests_bless_yolo/rustfix-maybe-incorrect.fixed (revision `waiting for dependencies to finish building`) ... ok
11291086
tests/actual_tests_bless_yolo/rustfix-maybe-incorrect.fixed ... ok
11301087
tests/actual_tests_bless_yolo/rustfix-maybe-incorrect.rs ... ok
1131-
tests/actual_tests_bless_yolo/rustfix-multiple-fail.rs (revision `waiting for dependencies to finish building`) ... ok
1132-
tests/actual_tests_bless_yolo/rustfix-multiple-fail.1.fixed (revision `waiting for dependencies to finish building`) ... ok
1133-
tests/actual_tests_bless_yolo/rustfix-multiple-fail.2.fixed (revision `waiting for dependencies to finish building`) ... ok
1134-
tests/actual_tests_bless_yolo/rustfix-multiple-fail.3.fixed (revision `waiting for dependencies to finish building`) ... ok
11351088
tests/actual_tests_bless_yolo/rustfix-multiple-fail.1.fixed ... ok
11361089
tests/actual_tests_bless_yolo/rustfix-multiple-fail.2.fixed ... FAILED
11371090
tests/actual_tests_bless_yolo/rustfix-multiple-fail.3.fixed ... ok

0 commit comments

Comments
 (0)