@@ -1305,54 +1305,34 @@ fn get_concurrency() -> usize {
1305
1305
1306
1306
pub fn filter_tests ( opts : & TestOpts , tests : Vec < TestDescAndFn > ) -> Vec < TestDescAndFn > {
1307
1307
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
+ }
1321
1315
} ;
1322
1316
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
+
1323
1322
// 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
+ } ) ;
1336
1326
1337
1327
// 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 ( ) ;
1356
1336
} ;
1357
1337
1358
1338
// Sort the tests alphabetically
0 commit comments