@@ -1296,54 +1296,34 @@ fn get_concurrency() -> usize {
12961296
12971297pub fn filter_tests ( opts : & TestOpts , tests : Vec < TestDescAndFn > ) -> Vec < TestDescAndFn > {
12981298 let mut filtered = tests;
1299- // Remove tests that don't match the test filter
1300- filtered = match opts. filter {
1301- None => filtered,
1302- Some ( ref filter) => filtered
1303- . into_iter ( )
1304- . filter ( |test| {
1305- if opts. filter_exact {
1306- test. desc . name . as_slice ( ) == & filter[ ..]
1307- } else {
1308- test. desc . name . as_slice ( ) . contains ( & filter[ ..] )
1309- }
1310- } )
1311- . collect ( ) ,
1299+ let matches_filter = |test : & TestDescAndFn , filter : & str | {
1300+ let test_name = test. desc . name . as_slice ( ) ;
1301+
1302+ match opts. filter_exact {
1303+ true => test_name == filter,
1304+ false => test_name. contains ( filter) ,
1305+ }
13121306 } ;
13131307
1308+ // Remove tests that don't match the test filter
1309+ if let Some ( ref filter) = opts. filter {
1310+ filtered. retain ( |test| matches_filter ( test, filter) ) ;
1311+ }
1312+
13141313 // Skip tests that match any of the skip filters
1315- filtered = filtered
1316- . into_iter ( )
1317- . filter ( |t| {
1318- !opts. skip . iter ( ) . any ( |sf| {
1319- if opts. filter_exact {
1320- t. desc . name . as_slice ( ) == & sf[ ..]
1321- } else {
1322- t. desc . name . as_slice ( ) . contains ( & sf[ ..] )
1323- }
1324- } )
1325- } )
1326- . collect ( ) ;
1314+ filtered. retain ( |test| {
1315+ !opts. skip . iter ( ) . any ( |sf| matches_filter ( test, sf) )
1316+ } ) ;
13271317
13281318 // Maybe pull out the ignored test and unignore them
1329- filtered = if !opts. run_ignored {
1330- filtered
1331- } else {
1332- fn filter ( test : TestDescAndFn ) -> Option < TestDescAndFn > {
1333- if test. desc . ignore {
1334- let TestDescAndFn { desc, testfn } = test;
1335- Some ( TestDescAndFn {
1336- desc : TestDesc {
1337- ignore : false ,
1338- ..desc
1339- } ,
1340- testfn,
1341- } )
1342- } else {
1343- None
1344- }
1345- }
1346- filtered. into_iter ( ) . filter_map ( filter) . collect ( )
1319+ if opts. run_ignored {
1320+ filtered = filtered. into_iter ( )
1321+ . filter ( |test| test. desc . ignore )
1322+ . map ( |mut test| {
1323+ test. desc . ignore = false ;
1324+ test
1325+ } )
1326+ . collect ( ) ;
13471327 } ;
13481328
13491329 // Sort the tests alphabetically
0 commit comments