@@ -34,7 +34,7 @@ macro_rules! do_test {
3434 }
3535
3636 let v = $input. to_owned( ) ;
37- let _ = std :: panic:: catch_unwind( move || {
37+ let _ = panic:: catch_unwind( move || {
3838 let mut v = v;
3939 let mut panic_countdown = panic_countdown;
4040 v. $func( |a, b| {
@@ -197,8 +197,7 @@ fn panic_safe() {
197197
198198 let mut rng = test_rng ( ) ;
199199
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 ) } ;
202201 let moduli: & [ u32 ] = if cfg ! ( miri) { & [ 5 ] } else { & [ 5 , 20 , 50 ] } ;
203202
204203 for len in lens {
@@ -294,15 +293,20 @@ fn test_sort() {
294293 }
295294 }
296295
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 {
301299 v[ i] = i as i32 ;
302300 }
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+
304308 v. sort ( ) ;
305- for i in 0 ..v . len ( ) {
309+ for i in 0 ..ORD_VIOLATION_MAX_LEN {
306310 assert_eq ! ( v[ i] , i as i32 ) ;
307311 }
308312
0 commit comments