@@ -103,13 +103,23 @@ impl Harness<StateParsed> {
103103 let mut cases = cases
104104 . into_iter ( )
105105 . map ( |c| Box :: new ( c) as Box < dyn Case > )
106- . collect ( ) ;
107- discover (
108- & self . state . start ,
109- & self . state . opts ,
110- & mut cases,
111- self . state . notifier . as_mut ( ) ,
112- ) ?;
106+ . collect :: < Vec < _ > > ( ) ;
107+ let mut retain_cases = Vec :: with_capacity ( cases. len ( ) ) ;
108+ for case in cases. iter ( ) {
109+ let retain_case = case_priority ( case. as_ref ( ) , & self . state . opts ) . is_some ( ) ;
110+ retain_cases. push ( retain_case) ;
111+ self . state . notifier . notify (
112+ notify:: event:: DiscoverCase {
113+ name : case. name ( ) . to_owned ( ) ,
114+ mode : RunMode :: Test ,
115+ selected : retain_case,
116+ elapsed_s : Some ( notify:: Elapsed ( self . state . start . elapsed ( ) ) ) ,
117+ }
118+ . into ( ) ,
119+ ) ?;
120+ }
121+ let mut retain_cases = retain_cases. into_iter ( ) ;
122+ cases. retain ( |_| retain_cases. next ( ) . unwrap ( ) ) ;
113123
114124 cases. sort_unstable_by_key ( |case| {
115125 let priority = case_priority ( case. as_ref ( ) , & self . state . opts ) ;
@@ -259,32 +269,6 @@ fn notifier(opts: &libtest_lexarg::TestOpts) -> Box<dyn notify::Notifier> {
259269 }
260270}
261271
262- fn discover (
263- start : & std:: time:: Instant ,
264- opts : & libtest_lexarg:: TestOpts ,
265- cases : & mut Vec < Box < dyn Case > > ,
266- notifier : & mut dyn notify:: Notifier ,
267- ) -> std:: io:: Result < ( ) > {
268- let mut retain_cases = Vec :: with_capacity ( cases. len ( ) ) ;
269- for case in cases. iter ( ) {
270- let retain_case = case_priority ( case. as_ref ( ) , opts) . is_some ( ) ;
271- retain_cases. push ( retain_case) ;
272- notifier. notify (
273- notify:: event:: DiscoverCase {
274- name : case. name ( ) . to_owned ( ) ,
275- mode : RunMode :: Test ,
276- selected : retain_case,
277- elapsed_s : Some ( notify:: Elapsed ( start. elapsed ( ) ) ) ,
278- }
279- . into ( ) ,
280- ) ?;
281- }
282- let mut retain_cases = retain_cases. into_iter ( ) ;
283- cases. retain ( |_| retain_cases. next ( ) . unwrap ( ) ) ;
284-
285- Ok ( ( ) )
286- }
287-
288272fn case_priority ( case : & dyn Case , opts : & libtest_lexarg:: TestOpts ) -> Option < usize > {
289273 let filtered_out =
290274 !opts. skip . is_empty ( ) && opts. skip . iter ( ) . any ( |sf| matches_filter ( case, sf, opts) ) ;
0 commit comments