From e6cde9f2a4f5e4d9e20686f29344461eacae3eba Mon Sep 17 00:00:00 2001 From: Mike Lubinets Date: Thu, 11 May 2017 16:48:25 +0300 Subject: [PATCH] Number of filtered out tests in tests summary Closes #31905 --- src/libtest/lib.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/libtest/lib.rs b/src/libtest/lib.rs index 0d615db3deb..ef048ac8ca3 100644 --- a/src/libtest/lib.rs +++ b/src/libtest/lib.rs @@ -542,6 +542,7 @@ struct ConsoleTestState { passed: usize, failed: usize, ignored: usize, + filtered_out: usize, measured: usize, metrics: MetricMap, failures: Vec<(TestDesc, Vec)>, @@ -570,6 +571,7 @@ pub fn new(opts: &TestOpts, _: Option) -> io::Result io::Result { } else { self.write_pretty("FAILED", term::color::RED)?; } - let s = format!(". {} passed; {} failed; {} ignored; {} measured\n\n", + let s = format!(". {} passed; {} failed; {} ignored; {} measured; {} filtered out\n\n", self.passed, self.failed, self.ignored, - self.measured); + self.measured, + self.filtered_out); self.write_plain(&s)?; return Ok(success); } @@ -875,6 +878,7 @@ pub fn run_tests_console(opts: &TestOpts, tests: Vec) -> io::Resu fn callback(event: &TestEvent, st: &mut ConsoleTestState) -> io::Result<()> { match (*event).clone() { TeFiltered(ref filtered_tests) => st.write_run_start(filtered_tests.len()), + TeFilteredOut(filtered_out) => Ok(st.filtered_out = filtered_out), TeWait(ref test, padding) => st.write_test_start(test, padding), TeTimeout(ref test) => st.write_timeout(test), TeResult(test, result, stdout) => { @@ -957,6 +961,7 @@ fn should_sort_failures_before_printing_them() { passed: 0, failed: 0, ignored: 0, + filtered_out: 0, measured: 0, max_name_len: 10, metrics: MetricMap::new(), @@ -1017,6 +1022,7 @@ pub enum TestEvent { TeWait(TestDesc, NamePadding), TeResult(TestDesc, TestResult, Vec), TeTimeout(TestDesc), + TeFilteredOut(usize), } pub type MonitorMsg = (TestDesc, TestResult, Vec); @@ -1028,11 +1034,16 @@ pub fn run_tests(opts: &TestOpts, tests: Vec, mut callback: F) use std::collections::HashMap; use std::sync::mpsc::RecvTimeoutError; + let tests_len = tests.len(); + let mut filtered_tests = filter_tests(opts, tests); if !opts.bench_benchmarks { filtered_tests = convert_benchmarks_to_tests(filtered_tests); } + let filtered_out = tests_len - filtered_tests.len(); + callback(TeFilteredOut(filtered_out))?; + let filtered_descs = filtered_tests.iter() .map(|t| t.desc.clone()) .collect(); -- 2.44.0