Skip to content

Commit e6cde9f

Browse files
committed
Number of filtered out tests in tests summary
Closes #31905
1 parent bb8d51c commit e6cde9f

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/libtest/lib.rs

+13-2
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,7 @@ struct ConsoleTestState<T> {
542542
passed: usize,
543543
failed: usize,
544544
ignored: usize,
545+
filtered_out: usize,
545546
measured: usize,
546547
metrics: MetricMap,
547548
failures: Vec<(TestDesc, Vec<u8>)>,
@@ -570,6 +571,7 @@ impl<T: Write> ConsoleTestState<T> {
570571
passed: 0,
571572
failed: 0,
572573
ignored: 0,
574+
filtered_out: 0,
573575
measured: 0,
574576
metrics: MetricMap::new(),
575577
failures: Vec::new(),
@@ -775,11 +777,12 @@ impl<T: Write> ConsoleTestState<T> {
775777
} else {
776778
self.write_pretty("FAILED", term::color::RED)?;
777779
}
778-
let s = format!(". {} passed; {} failed; {} ignored; {} measured\n\n",
780+
let s = format!(". {} passed; {} failed; {} ignored; {} measured; {} filtered out\n\n",
779781
self.passed,
780782
self.failed,
781783
self.ignored,
782-
self.measured);
784+
self.measured,
785+
self.filtered_out);
783786
self.write_plain(&s)?;
784787
return Ok(success);
785788
}
@@ -875,6 +878,7 @@ pub fn run_tests_console(opts: &TestOpts, tests: Vec<TestDescAndFn>) -> io::Resu
875878
fn callback<T: Write>(event: &TestEvent, st: &mut ConsoleTestState<T>) -> io::Result<()> {
876879
match (*event).clone() {
877880
TeFiltered(ref filtered_tests) => st.write_run_start(filtered_tests.len()),
881+
TeFilteredOut(filtered_out) => Ok(st.filtered_out = filtered_out),
878882
TeWait(ref test, padding) => st.write_test_start(test, padding),
879883
TeTimeout(ref test) => st.write_timeout(test),
880884
TeResult(test, result, stdout) => {
@@ -957,6 +961,7 @@ fn should_sort_failures_before_printing_them() {
957961
passed: 0,
958962
failed: 0,
959963
ignored: 0,
964+
filtered_out: 0,
960965
measured: 0,
961966
max_name_len: 10,
962967
metrics: MetricMap::new(),
@@ -1017,6 +1022,7 @@ pub enum TestEvent {
10171022
TeWait(TestDesc, NamePadding),
10181023
TeResult(TestDesc, TestResult, Vec<u8>),
10191024
TeTimeout(TestDesc),
1025+
TeFilteredOut(usize),
10201026
}
10211027

10221028
pub type MonitorMsg = (TestDesc, TestResult, Vec<u8>);
@@ -1028,11 +1034,16 @@ pub fn run_tests<F>(opts: &TestOpts, tests: Vec<TestDescAndFn>, mut callback: F)
10281034
use std::collections::HashMap;
10291035
use std::sync::mpsc::RecvTimeoutError;
10301036

1037+
let tests_len = tests.len();
1038+
10311039
let mut filtered_tests = filter_tests(opts, tests);
10321040
if !opts.bench_benchmarks {
10331041
filtered_tests = convert_benchmarks_to_tests(filtered_tests);
10341042
}
10351043

1044+
let filtered_out = tests_len - filtered_tests.len();
1045+
callback(TeFilteredOut(filtered_out))?;
1046+
10361047
let filtered_descs = filtered_tests.iter()
10371048
.map(|t| t.desc.clone())
10381049
.collect();

0 commit comments

Comments
 (0)