@@ -34,7 +34,7 @@ macro_rules! do_test {
34
34
}
35
35
36
36
let v = $input. to_owned( ) ;
37
- let _ = std :: panic:: catch_unwind( move || {
37
+ let _ = panic:: catch_unwind( move || {
38
38
let mut v = v;
39
39
let mut panic_countdown = panic_countdown;
40
40
v. $func( |a, b| {
@@ -197,8 +197,7 @@ fn panic_safe() {
197
197
198
198
let mut rng = test_rng ( ) ;
199
199
200
- // Miri is too slow (but still need to `chain` to make the types match)
201
- let lens = if cfg ! ( miri) { ( 1 ..10 ) . chain ( 0 ..0 ) } else { ( 1 ..20 ) . chain ( 70 ..MAX_LEN ) } ;
200
+ let lens = if cfg ! ( miri) { ( 1 ..10 ) . chain ( 30 ..36 ) } else { ( 1 ..20 ) . chain ( 70 ..MAX_LEN ) } ;
202
201
let moduli: & [ u32 ] = if cfg ! ( miri) { & [ 5 ] } else { & [ 5 , 20 , 50 ] } ;
203
202
204
203
for len in lens {
@@ -294,15 +293,20 @@ fn test_sort() {
294
293
}
295
294
}
296
295
297
- // Sort using a completely random comparison function.
298
- // This will reorder the elements *somehow*, but won't panic.
299
- let mut v = [ 0 ; 500 ] ;
300
- for i in 0 ..v. len ( ) {
296
+ const ORD_VIOLATION_MAX_LEN : usize = 500 ;
297
+ let mut v = [ 0 ; ORD_VIOLATION_MAX_LEN ] ;
298
+ for i in 0 ..ORD_VIOLATION_MAX_LEN {
301
299
v[ i] = i as i32 ;
302
300
}
303
- v. sort_by ( |_, _| * [ Less , Equal , Greater ] . choose ( & mut rng) . unwrap ( ) ) ;
301
+
302
+ // Sort using a completely random comparison function. This will reorder the elements *somehow*,
303
+ // it may panic but the original elements must still be present.
304
+ let _ = panic:: catch_unwind ( move || {
305
+ v. sort_by ( |_, _| * [ Less , Equal , Greater ] . choose ( & mut rng) . unwrap ( ) ) ;
306
+ } ) ;
307
+
304
308
v. sort ( ) ;
305
- for i in 0 ..v . len ( ) {
309
+ for i in 0 ..ORD_VIOLATION_MAX_LEN {
306
310
assert_eq ! ( v[ i] , i as i32 ) ;
307
311
}
308
312
0 commit comments