diff --git a/tests/run-pass/time.rs b/tests/run-pass/time.rs index 2c9b579f7e29..d430062a1533 100644 --- a/tests/run-pass/time.rs +++ b/tests/run-pass/time.rs @@ -1,22 +1,29 @@ // compile-flags: -Zmiri-disable-isolation -use std::time::{SystemTime, Instant}; +use std::time::{SystemTime, Instant, Duration}; + +fn duration_sanity(diff: Duration) { + // On my laptop, I observed times around 15-40ms. Add 10x lee-way both ways. + assert!(diff.as_millis() > 1); + assert!(diff.as_millis() < 500); +} fn main() { // Check `SystemTime`. let now1 = SystemTime::now(); - // Do some work to make time pass. - for _ in 0..10 { drop(vec![42]); } - let now2 = SystemTime::now(); - assert!(now2 > now1); - let diff = now2.duration_since(now1).unwrap(); - assert_eq!(now1 + diff, now2); - assert_eq!(now2 - diff, now1); - // Sanity-check the time we got. let seconds_since_epoch = now1.duration_since(SystemTime::UNIX_EPOCH).unwrap().as_secs(); let years_since_epoch = seconds_since_epoch / 3600 / 24 / 365; let year = 1970 + years_since_epoch; assert!(2020 <= year && year < 2100); + // Do some work to make time pass. + for _ in 0..10 { drop(vec![42]); } + let now2 = SystemTime::now(); + assert!(now2 > now1); + // Sanity-check the difference we got. + let diff = now2.duration_since(now1).unwrap(); + assert_eq!(now1 + diff, now2); + assert_eq!(now2 - diff, now1); + duration_sanity(diff); // Check `Instant`. let now1 = Instant::now(); @@ -24,10 +31,9 @@ fn main() { for _ in 0..10 { drop(vec![42]); } let now2 = Instant::now(); assert!(now2 > now1); + // Sanity-check the difference we got. let diff = now2.duration_since(now1); assert_eq!(now1 + diff, now2); assert_eq!(now2 - diff, now1); - // Sanity-check the difference we got. - assert!(diff.as_micros() > 1); - assert!(diff.as_micros() < 1_000_000); + duration_sanity(diff); }