@@ -1296,54 +1296,34 @@ fn get_concurrency() -> usize {
1296
1296
1297
1297
pub fn filter_tests ( opts : & TestOpts , tests : Vec < TestDescAndFn > ) -> Vec < TestDescAndFn > {
1298
1298
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
+ }
1312
1306
} ;
1313
1307
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
+
1314
1313
// 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
+ } ) ;
1327
1317
1328
1318
// 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 ( ) ;
1347
1327
} ;
1348
1328
1349
1329
// Sort the tests alphabetically
0 commit comments