diff options
author | Avikam Agur <avikam@pagaya-inv.com> | 2018-05-22 14:37:22 +0300 |
---|---|---|
committer | Avikam Agur <avikam@pagaya-inv.com> | 2018-05-22 14:37:22 +0300 |
commit | 7c3a3ec66b828c8d908accc88306fe01201e4048 (patch) | |
tree | b19193553204b520638a0356093d38f17104aef3 | |
parent | b6a01ebe445499e3b6f7d00dedfe79d5cf4cab54 (diff) | |
download | croniter-7c3a3ec66b828c8d908accc88306fe01201e4048.tar.gz |
fix `get_next` while perserving the fix of `get_prev` in 7661c2aaa
-rw-r--r-- | src/croniter/croniter.py | 3 | ||||
-rwxr-xr-x | src/croniter/tests/test_croniter.py | 16 |
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() |