From b9b908f62fa4c68d58c4c67c5f397914674bc196 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 12 Nov 2013 11:44:14 -0800 Subject: [PATCH] Make a time test less flaky This test was failing periodically on windows and other platforms, and in debugging the issue locally I've found that the previous test was failing at the assertion `ns0 <= ns1`. Upon inspecting the values, the two numbers were very close to one another, but off by a little bit. I believe that this is because `precise_time_s` goes from `u64` -> `f64` and then we go again back to `u64` for the assertion. This conversion is a lossy one that's not always guaranteed to succeed, so instead I've changed the test to only compare against u64 instances. --- src/libextra/time.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/libextra/time.rs b/src/libextra/time.rs index aed42e8d7fe..d6e2a416427 100644 --- a/src/libextra/time.rs +++ b/src/libextra/time.rs @@ -1005,18 +1005,17 @@ fn test_get_time() { fn test_precise_time() { let s0 = precise_time_s(); - let ns1 = precise_time_ns(); - debug!("s0={} sec", f64::to_str_digits(s0, 9u)); assert!(s0 > 0.); - let ns0 = (s0 * 1000000000.) as u64; - debug!("ns0={:?} ns", ns0); - debug!("ns1={:?} ns", ns0); + let ns0 = precise_time_ns(); + let ns1 = precise_time_ns(); + debug!("ns0={:?} ns", ns0); + debug!("ns1={:?} ns", ns1); assert!(ns1 >= ns0); let ns2 = precise_time_ns(); - debug!("ns2={:?} ns", ns0); + debug!("ns2={:?} ns", ns2); assert!(ns2 >= ns1); }