@@ -542,6 +542,7 @@ struct ConsoleTestState<T> {
542
542
passed : usize ,
543
543
failed : usize ,
544
544
ignored : usize ,
545
+ filtered_out : usize ,
545
546
measured : usize ,
546
547
metrics : MetricMap ,
547
548
failures : Vec < ( TestDesc , Vec < u8 > ) > ,
@@ -570,6 +571,7 @@ impl<T: Write> ConsoleTestState<T> {
570
571
passed : 0 ,
571
572
failed : 0 ,
572
573
ignored : 0 ,
574
+ filtered_out : 0 ,
573
575
measured : 0 ,
574
576
metrics : MetricMap :: new ( ) ,
575
577
failures : Vec :: new ( ) ,
@@ -775,11 +777,12 @@ impl<T: Write> ConsoleTestState<T> {
775
777
} else {
776
778
self . write_pretty ( "FAILED" , term:: color:: RED ) ?;
777
779
}
778
- let s = format ! ( ". {} passed; {} failed; {} ignored; {} measured\n \n " ,
780
+ let s = format ! ( ". {} passed; {} failed; {} ignored; {} measured; {} filtered out \n \n " ,
779
781
self . passed,
780
782
self . failed,
781
783
self . ignored,
782
- self . measured) ;
784
+ self . measured,
785
+ self . filtered_out) ;
783
786
self . write_plain ( & s) ?;
784
787
return Ok ( success) ;
785
788
}
@@ -875,6 +878,7 @@ pub fn run_tests_console(opts: &TestOpts, tests: Vec<TestDescAndFn>) -> io::Resu
875
878
fn callback < T : Write > ( event : & TestEvent , st : & mut ConsoleTestState < T > ) -> io:: Result < ( ) > {
876
879
match ( * event) . clone ( ) {
877
880
TeFiltered ( ref filtered_tests) => st. write_run_start ( filtered_tests. len ( ) ) ,
881
+ TeFilteredOut ( filtered_out) => Ok ( st. filtered_out = filtered_out) ,
878
882
TeWait ( ref test, padding) => st. write_test_start ( test, padding) ,
879
883
TeTimeout ( ref test) => st. write_timeout ( test) ,
880
884
TeResult ( test, result, stdout) => {
@@ -957,6 +961,7 @@ fn should_sort_failures_before_printing_them() {
957
961
passed : 0 ,
958
962
failed : 0 ,
959
963
ignored : 0 ,
964
+ filtered_out : 0 ,
960
965
measured : 0 ,
961
966
max_name_len : 10 ,
962
967
metrics : MetricMap :: new ( ) ,
@@ -1017,6 +1022,7 @@ pub enum TestEvent {
1017
1022
TeWait ( TestDesc , NamePadding ) ,
1018
1023
TeResult ( TestDesc , TestResult , Vec < u8 > ) ,
1019
1024
TeTimeout ( TestDesc ) ,
1025
+ TeFilteredOut ( usize ) ,
1020
1026
}
1021
1027
1022
1028
pub type MonitorMsg = ( TestDesc , TestResult , Vec < u8 > ) ;
@@ -1028,11 +1034,16 @@ pub fn run_tests<F>(opts: &TestOpts, tests: Vec<TestDescAndFn>, mut callback: F)
1028
1034
use std:: collections:: HashMap ;
1029
1035
use std:: sync:: mpsc:: RecvTimeoutError ;
1030
1036
1037
+ let tests_len = tests. len ( ) ;
1038
+
1031
1039
let mut filtered_tests = filter_tests ( opts, tests) ;
1032
1040
if !opts. bench_benchmarks {
1033
1041
filtered_tests = convert_benchmarks_to_tests ( filtered_tests) ;
1034
1042
}
1035
1043
1044
+ let filtered_out = tests_len - filtered_tests. len ( ) ;
1045
+ callback ( TeFilteredOut ( filtered_out) ) ?;
1046
+
1036
1047
let filtered_descs = filtered_tests. iter ( )
1037
1048
. map ( |t| t. desc . clone ( ) )
1038
1049
. collect ( ) ;
0 commit comments