From 47fcdd0723173e0008429895a9f5546f095f10a8 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sun, 22 Mar 2020 13:17:00 +1000 Subject: [PATCH] possible fix for CI failure --- rslib/src/time.rs | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/rslib/src/time.rs b/rslib/src/time.rs index 8d9084c45..e392cbb6e 100644 --- a/rslib/src/time.rs +++ b/rslib/src/time.rs @@ -4,15 +4,35 @@ use std::time; pub(crate) fn i64_unix_secs() -> i64 { - time::SystemTime::now() - .duration_since(time::SystemTime::UNIX_EPOCH) - .unwrap() - .as_secs() as i64 + elapsed().as_secs() as i64 } pub(crate) fn i64_unix_millis() -> i64 { + elapsed().as_millis() as i64 +} + +#[cfg(not(test))] +fn elapsed() -> time::Duration { time::SystemTime::now() .duration_since(time::SystemTime::UNIX_EPOCH) .unwrap() - .as_millis() as i64 +} + +// when running in CI, shift the current time away from the cutoff point +// to accomodate unit tests that depend on the current time +#[cfg(test)] +fn elapsed() -> time::Duration { + use chrono::{Local, Timelike}; + + let now = Local::now(); + + let mut elap = time::SystemTime::now() + .duration_since(time::SystemTime::UNIX_EPOCH) + .unwrap(); + + if now.hour() >= 2 && now.hour() < 4 { + elap -= time::Duration::from_secs(60 * 60 * 2); + } + + elap }