def test_multi_exception(self): s = CronTabSchedule(MULTI_SCHEDULE) with self.assertRaises(CronTabScheduleException): [ slot for slot in s.schedule_iter(start=datetime(2015, 1, 1), multi=False) ]
def test_schedule_iter_dynamic(self): s = CronTabSchedule(SCHEDULE) slots = [ slot for slot in s.schedule_iter(start=datetime(2015, 1, 1), multi=False) ] self.assertEqual(slots, DYNAMIC_EXPECTED)
def test_init(self): s = CronTabSchedule(SCHEDULE) self.assertEqual(len(s.entries), 5) self.assertEqual(s.entries[2][1], '300') # The rest is thrown in here for code coverage. s.next_minute() s.next_minute(now=datetime.now())
def test_schedule_iter_gap(self): s = CronTabSchedule(GAP_SCHEDULE) slots = [ slot for slot in s.schedule_iter(start=datetime(2015, 1, 1), end=datetime(2015, 1, 1, 12, 1)) ] self.assertEqual(slots, GAP_EXPECTED)
def test_schedule_iter_fixed(self): s = CronTabSchedule(SCHEDULE) slots = [slot for slot in s.schedule_iter( start=datetime(2015, 1, 1), end=datetime(2015, 1, 8), multi=False)] self.assertEqual(slots, FIXED_EXPECTED) # Code coverage. next(s.schedule_iter())
def test_schedule_iter_fixed(self): s = CronTabSchedule(SCHEDULE) slots = [ slot for slot in s.schedule_iter(start=datetime(2015, 1, 1), end=datetime(2015, 1, 8), multi=False) ] self.assertEqual(slots, FIXED_EXPECTED) # Code coverage. next(s.schedule_iter())
def test_soonest_no_now(self): s = CronTabSchedule('* * * * * foo\n* * * * * bar') now = datetime.now() if not now.second: time.sleep(1) now = datetime.now() nxt = s.soonest() self.assertEqual( nxt, now + timedelta(seconds=60 - now.second - now.microsecond / 1000000))
def test_delimiter(self): # Paranoia: Make sure we're actually testing what we think # we're testing, by ensuring that the original schedule had # newlines in it and the one we're using doesn't. self.assertNotEqual(SCHEDULE.find('\n'), -1) with_semis = SCHEDULE.replace('\n', ';') self.assertEqual(with_semis.find('\n'), -1) s = CronTabSchedule(with_semis, delimiter=';') slots = [slot for slot in s.schedule_iter( start=datetime(2015, 1, 1), multi=False)] self.assertEqual(slots, DYNAMIC_EXPECTED)
def test_delimiter(self): # Paranoia: Make sure we're actually testing what we think # we're testing, by ensuring that the original schedule had # newlines in it and the one we're using doesn't. self.assertNotEqual(SCHEDULE.find('\n'), -1) with_semis = SCHEDULE.replace('\n', ';') self.assertEqual(with_semis.find('\n'), -1) s = CronTabSchedule(with_semis, delimiter=';') slots = [ slot for slot in s.schedule_iter(start=datetime(2015, 1, 1), multi=False) ] self.assertEqual(slots, DYNAMIC_EXPECTED)
def test_schedule_iter_end_endless(self): s = CronTabSchedule(SCHEDULE) with self.assertRaises(ValueError): next(s.schedule_iter(end=datetime.now(), endless=True))
def test_next_active_no_schedule(self): s = CronTabSchedule('') with self.assertRaises(CronTabScheduleException): s.next_active()
def test_no_schedule(self): s = CronTabSchedule('') with self.assertRaises(CronTabScheduleException): s.soonest()
def test_multi_exception(self): s = CronTabSchedule(MULTI_SCHEDULE) with self.assertRaises(CronTabScheduleException): [slot for slot in s.schedule_iter( start=datetime(2015, 1, 1), multi=False)]
def test_next_active(self): s = CronTabSchedule(SCHEDULE) s.next_active()
def test_soonest_with_seconds(self): s = CronTabSchedule('* * * * * foo') now = datetime(2015, 1, 1, 1, 1, 1, 1) nxt = s.soonest(now=now) self.assertEqual(nxt, datetime(2015, 1, 1, 1, 2))
def test_multi_ok(self): s = CronTabSchedule(MULTI_SCHEDULE) slots = [slot for slot in s.schedule_iter(start=datetime(2015, 1, 1))] self.assertEqual(slots, MULTI_EXPECTED)
def test_soonest_backtrack_needed(self): s = CronTabSchedule('* * * * * foo') now = datetime(2015, 1, 1) nxt = s.soonest(now=now) self.assertEqual(now, nxt)
def test_add_entry_invalid(self): with self.assertRaises(CronTabScheduleException): CronTabSchedule('* * *')
def test_schedule_iter_dynamic(self): s = CronTabSchedule(SCHEDULE) slots = [slot for slot in s.schedule_iter( start=datetime(2015, 1, 1), multi=False)] self.assertEqual(slots, DYNAMIC_EXPECTED)
def test_multi_ok(self): s = CronTabSchedule(MULTI_SCHEDULE) slots = [slot for slot in s.schedule_iter( start=datetime(2015, 1, 1))] self.assertEqual(slots, MULTI_EXPECTED)
def test_next_active(self): s = CronTabSchedule(SCHEDULE) s.next_active(datetime.now().replace(second=25)) s.next_active(datetime.now().replace(second=0, microsecond=0))