Skip to content

Commit 0803c18

Browse files
committed
refactor(harness): Move filtering into main discovery logic
1 parent 859853f commit 0803c18

1 file changed

Lines changed: 17 additions & 33 deletions

File tree

crates/libtest2-harness/src/harness.rs

Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
288272
fn 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

Comments
 (0)