summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriddo <iddo.aviram@similarweb.com>2015-11-23 17:07:43 +0200
committeriddo <iddo.aviram@similarweb.com>2015-11-23 17:07:43 +0200
commitd896ef747f508c5df7ecea0cacbbd3e9a9311649 (patch)
tree6c83072a5af50e43326acb82048ad16f76af488c
parent1250656c3a1133bdda1e9b08d04d517a80fc3163 (diff)
downloadcroniter-iddoav/bug/last_day_of_month_is_not_correct.tar.gz
The fuctionality of 'l' as day of month was brokne, since the month variable was not properly updatediddoav/bug/last_day_of_month_is_not_correct
-rw-r--r--src/croniter/croniter.py1
-rwxr-xr-xsrc/croniter/tests/test_croniter.py16
2 files changed, 17 insertions, 0 deletions
diff --git a/src/croniter/croniter.py b/src/croniter/croniter.py
index 2a237a9..eabb241 100644
--- a/src/croniter/croniter.py
+++ b/src/croniter/croniter.py
@@ -350,6 +350,7 @@ class croniter(object):
for proc in procs:
(changed, dst) = proc(dst)
if changed:
+ day, month, year = dst.day, dst.month, dst.year
next = True
break
if next:
diff --git a/src/croniter/tests/test_croniter.py b/src/croniter/tests/test_croniter.py
index aa3c114..f8ac6f6 100755
--- a/src/croniter/tests/test_croniter.py
+++ b/src/croniter/tests/test_croniter.py
@@ -164,6 +164,22 @@ class CroniterTest(base.TestCase):
self.assertEqual(n4.month, 1)
self.assertEqual(n4.year, 2011)
+ def testLastDayOfMonth(self):
+ base = datetime(2015, 9, 4)
+ itr = croniter('0 0 l * *', base)
+ n1 = itr.get_next(datetime)
+ self.assertEqual(n1.month, 9)
+ self.assertEqual(n1.day, 30)
+ n2 = itr.get_next(datetime)
+ self.assertEqual(n2.month, 10)
+ self.assertEqual(n2.day, 31)
+ n3 = itr.get_next(datetime)
+ self.assertEqual(n3.month, 11)
+ self.assertEqual(n3.day, 30)
+ n4 = itr.get_next(datetime)
+ self.assertEqual(n4.month, 12)
+ self.assertEqual(n4.day, 31)
+
def testError(self):
itr = croniter('* * * * *')
self.assertRaises(TypeError, itr.get_next, str)