summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvikam Agur <avikam@pagaya-inv.com>2018-05-22 14:37:22 +0300
committerAvikam Agur <avikam@pagaya-inv.com>2018-05-22 14:37:22 +0300
commit7c3a3ec66b828c8d908accc88306fe01201e4048 (patch)
treeb19193553204b520638a0356093d38f17104aef3
parentb6a01ebe445499e3b6f7d00dedfe79d5cf4cab54 (diff)
downloadcroniter-7c3a3ec66b828c8d908accc88306fe01201e4048.tar.gz
fix `get_next` while perserving the fix of `get_prev` in 7661c2aaa
-rw-r--r--src/croniter/croniter.py3
-rwxr-xr-xsrc/croniter/tests/test_croniter.py16
2 files changed, 18 insertions, 1 deletions
diff --git a/src/croniter/croniter.py b/src/croniter/croniter.py
index 1a78b30..6c8331b 100644
--- a/src/croniter/croniter.py
+++ b/src/croniter/croniter.py
@@ -223,11 +223,12 @@ class croniter(object):
if is_prev:
nearest_diff_method = self._get_prev_nearest_diff
sign = -1
+ offset = (len(expanded) == 6 or now % 60 > 0) and 1 or 60
else:
nearest_diff_method = self._get_next_nearest_diff
sign = 1
+ offset = (len(expanded) == 6) and 1 or 60
- offset = (len(expanded) == 6 or now % 60 > 0) and 1 or 60
dst = now = self._timestamp_to_datetime(now + sign * offset)
month, year = dst.month, dst.year
diff --git a/src/croniter/tests/test_croniter.py b/src/croniter/tests/test_croniter.py
index bef37cf..b7bf57a 100755
--- a/src/croniter/tests/test_croniter.py
+++ b/src/croniter/tests/test_croniter.py
@@ -796,6 +796,22 @@ class CroniterTest(base.TestCase):
n1 = itr.get_prev(datetime)
self.assertEqual(12, n1.hour)
+ n2 = itr.get_prev(datetime)
+ self.assertEqual(7, n2.hour)
+
+ n3 = itr.get_next(datetime)
+ self.assertEqual(12, n3.hour)
+
+ def test_next_when_now_satisfies_cron(self):
+ ts_a = datetime(2018, 5, 21, 0, 3, 0)
+ ts_b = datetime(2018, 5, 21, 0, 4, 20)
+ test_cron = '4 * * * *'
+
+ next_a = croniter(test_cron, start_time=ts_a).get_next()
+ next_b = croniter(test_cron, start_time=ts_b).get_next()
+
+ self.assertTrue(next_b > next_a)
+
if __name__ == '__main__':
unittest.main()