@@ -7,7 +7,10 @@ use std::{
7
7
path:: { Path , PathBuf } ,
8
8
process:: { self , Command , ExitStatus } ,
9
9
str,
10
- sync:: { Arc , Mutex } ,
10
+ sync:: {
11
+ atomic:: { AtomicUsize , Ordering } ,
12
+ Arc , Mutex ,
13
+ } ,
11
14
thread:: sleep,
12
15
time:: { Duration , Instant } ,
13
16
} ;
@@ -460,11 +463,12 @@ fn test_file(
460
463
inner : Arc < LangTesterPooler > ,
461
464
) -> ( Vec < ( String , TestFailure ) > , usize ) {
462
465
let failures = Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ;
463
- let mut num_ignored = 0 ;
466
+ let num_ignored = Arc :: new ( AtomicUsize :: new ( 0 ) ) ;
464
467
let pool = ThreadPool :: new ( inner. test_threads ) ;
465
468
for p in test_files {
466
469
let test_fname = p. file_stem ( ) . unwrap ( ) . to_str ( ) . unwrap ( ) . to_owned ( ) ;
467
470
471
+ let num_ignored = num_ignored. clone ( ) ;
468
472
let failures = failures. clone ( ) ;
469
473
let inner = inner. clone ( ) ;
470
474
pool. execute ( move || {
@@ -479,26 +483,26 @@ fn test_file(
479
483
480
484
if test_str. is_empty ( ) {
481
485
write_ignored ( test_fname. as_str ( ) , "test string is empty" , inner) ;
482
- num_ignored += 1 ;
486
+ num_ignored. fetch_add ( 1 , Ordering :: Relaxed ) ;
483
487
return ;
484
488
}
485
489
486
490
let tests = parse_tests ( & test_str) ;
487
491
if ( inner. ignored && !tests. ignore ) || ( !inner. ignored && tests. ignore ) {
488
492
write_ignored ( test_fname. as_str ( ) , "" , inner) ;
489
- num_ignored += 1 ;
493
+ num_ignored. fetch_add ( 1 , Ordering :: Relaxed ) ;
490
494
return ;
491
495
}
492
496
493
497
if run_tests ( Arc :: clone ( & inner) , tests. tests , p, failures) {
494
- num_ignored += 1 ;
498
+ num_ignored. fetch_add ( 1 , Ordering :: Relaxed ) ;
495
499
}
496
500
} ) ;
497
501
}
498
502
pool. join ( ) ;
499
503
let failures = Mutex :: into_inner ( Arc :: try_unwrap ( failures) . unwrap ( ) ) . unwrap ( ) ;
500
504
501
- ( failures, num_ignored)
505
+ ( failures, Arc :: try_unwrap ( num_ignored) . unwrap ( ) . into_inner ( ) )
502
506
}
503
507
504
508
/// Run the tests for `path`.
0 commit comments