The fuctionality of 'l' as day of month was brokne, since the month variable was not properly updated

This commit is contained in:
iddo 2015-11-23 17:07:43 +02:00
parent 1250656c3a
commit d896ef747f
2 changed files with 17 additions and 0 deletions

View File

@ -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:

View File

@ -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)