@@ -1305,54 +1305,34 @@ fn get_concurrency() -> usize {
13051305
13061306pub fn filter_tests ( opts : & TestOpts , tests : Vec < TestDescAndFn > ) -> Vec < TestDescAndFn > {
13071307 let mut filtered = tests;
1308- // Remove tests that don't match the test filter
1309- filtered = match opts. filter {
1310- None => filtered,
1311- Some ( ref filter) => filtered
1312- . into_iter ( )
1313- . filter ( |test| {
1314- if opts. filter_exact {
1315- test. desc . name . as_slice ( ) == & filter[ ..]
1316- } else {
1317- test. desc . name . as_slice ( ) . contains ( & filter[ ..] )
1318- }
1319- } )
1320- . collect ( ) ,
1308+ let matches_filter = |test : & TestDescAndFn , filter : & str | {
1309+ let test_name = test. desc . name . as_slice ( ) ;
1310+
1311+ match opts. filter_exact {
1312+ true => test_name == filter,
1313+ false => test_name. contains ( filter) ,
1314+ }
13211315 } ;
13221316
1317+ // Remove tests that don't match the test filter
1318+ if let Some ( ref filter) = opts. filter {
1319+ filtered. retain ( |test| matches_filter ( test, filter) ) ;
1320+ }
1321+
13231322 // Skip tests that match any of the skip filters
1324- filtered = filtered
1325- . into_iter ( )
1326- . filter ( |t| {
1327- !opts. skip . iter ( ) . any ( |sf| {
1328- if opts. filter_exact {
1329- t. desc . name . as_slice ( ) == & sf[ ..]
1330- } else {
1331- t. desc . name . as_slice ( ) . contains ( & sf[ ..] )
1332- }
1333- } )
1334- } )
1335- . collect ( ) ;
1323+ filtered. retain ( |test| {
1324+ !opts. skip . iter ( ) . any ( |sf| matches_filter ( test, sf) )
1325+ } ) ;
13361326
13371327 // Maybe pull out the ignored test and unignore them
1338- filtered = if !opts. run_ignored {
1339- filtered
1340- } else {
1341- fn filter ( test : TestDescAndFn ) -> Option < TestDescAndFn > {
1342- if test. desc . ignore {
1343- let TestDescAndFn { desc, testfn } = test;
1344- Some ( TestDescAndFn {
1345- desc : TestDesc {
1346- ignore : false ,
1347- ..desc
1348- } ,
1349- testfn,
1350- } )
1351- } else {
1352- None
1353- }
1354- }
1355- filtered. into_iter ( ) . filter_map ( filter) . collect ( )
1328+ if opts. run_ignored {
1329+ filtered = filtered. into_iter ( )
1330+ . filter ( |test| test. desc . ignore )
1331+ . map ( |mut test| {
1332+ test. desc . ignore = false ;
1333+ test
1334+ } )
1335+ . collect ( ) ;
13561336 } ;
13571337
13581338 // Sort the tests alphabetically
0 commit comments