def test_job_constructor_L_dom(self): job = Job("* * L * *") assert not job.allowed_every_dom assert job.allowed_last_dom assert job.allowed_dom == set([-1]) assert job._should_run_at(d(2019, 3, 31)) assert not job._should_run_at(d(2019, 3, 28)) assert job._should_run_at(d(2019, 2, 28))
def test_job_constructor_L_dow(self): job = Job("* * * * 5l") # 5=friday, l=only the last one of the month assert job.allowed_every_dom assert not job.allowed_last_dom assert not job.allowed_every_dow assert not job.allowed_dow assert job.allowed_dowl == set([4]) # 5 in cron, 4 in python assert job._should_run_at(d(2019, 3, 29)) # was fri assert not job._should_run_at(d(2019, 3, 28)) # was thu assert not job._should_run_at(d(2019, 3, 8)) # was fri
def test_job_constructor_wrong(self): with self.assertRaises(ValueError): Job("some silly text") with self.assertRaises(ValueError): Job("* * goofy * *") with self.assertRaises(ValueError): Job("* * * * * L") with self.assertRaises(ValueError): Job("* 1-2-3 * *") with self.assertRaises(ValueError): Job("* 1;2;3 * *") with self.assertRaises(ValueError): Job("* @hourly") with self.assertRaises(ValueError): Job("* L * * *") with self.assertRaises(ValueError): Job("* * 1w2 * *")
def test_job_constructor_basic(self): job = Job("* 4 * * *") ### assert job.allowed_every_min ### assert not job.allowed_every_hour assert job.allowed_hours == set([4]) ### assert job.allowed_every_dom assert not job.allowed_last_dom ### assert job.allowed_every_month ### assert job.allowed_every_dow ### assert job.allowed_every_year
def test_job_constructor_more_complicated(self): job = Job("30 */3 * mar-jun,dec MON") ### assert not job.allowed_every_min assert job.allowed_min == set([30]) ### assert not job.allowed_every_hour assert job.allowed_hours == set([0, 3, 6, 9, 12, 15, 18, 21]) ### assert job.allowed_every_dom assert not job.allowed_last_dom ### assert not job.allowed_every_month assert job.allowed_months == set([3, 4, 5, 6, 12]) ### assert not job.allowed_every_dow assert job.allowed_dow == set([0]) # 1 in cron, 0 in python ### assert job.allowed_every_year
def test_job_constructor_dow_sharp(self): job = Job("* * * * 5#2") # second friday in the month assert job.allowed_every_dom assert not job.allowed_last_dom assert not job.allowed_every_dow assert not job.allowed_dow assert not job.allowed_dowl assert 2 in job.allowed_dow_sharp.keys() assert job.allowed_dow_sharp[2] == set([4]) # 5 in cron, 4 in python assert not job._should_run_at(d(2019, 3, 1)) # was fri assert job._should_run_at(d(2019, 3, 8)) # was fri assert not job._should_run_at(d(2019, 3, 15)) # was fri assert not job._should_run_at(d(2019, 3, 22)) # was fri assert not job._should_run_at(d(2019, 3, 29)) # was fri assert not job._should_run_at(d(2019, 3, 28)) # was thu
def test_is_last_wom(self): job = Job() assert not job.is_last_wom(d(2019, 3, 1)) assert not job.is_last_wom(d(2019, 3, 24)) assert job.is_last_wom(d(2019, 3, 25)) assert job.is_last_wom(d(2019, 3, 31))
def test_get_num_wom(self): job = Job() assert job.get_num_wom(d(2019, 3, 7)) == 1 # first thursday of month assert job.get_num_wom(d(2019, 3, 8)) == 2 # second friday of month assert job.get_num_wom(d(2019, 3, 31)) == 5 # fifth sunday of month
def test_job_constructor_reverse_order(self): job = Job("* 23-4 * * *") assert job.allowed_hours == set([23, 0, 1, 2, 3, 4])
def test_job_constructor_alias(self): job = Job("@hourly") assert not job.allowed_every_min assert job.allowed_every_hour assert job.allowed_every_month assert job.allowed_every_year
def test_job_constructor_W_dom(self): job = Job("* * 15w * *") assert not job.allowed_every_dom assert not job.allowed_last_dom assert job.allowed_dom == set() assert job.allowed_wdom == set([15]) assert job._should_run_at(d(2019, 3, 15)) # was fri assert not job._should_run_at(d(2018, 12, 15)) # was sat assert job._should_run_at(d(2018, 12, 14)) # was fri * assert not job._should_run_at(d(2018, 7, 15)) # was sun assert job._should_run_at(d(2018, 7, 16)) # was mon ### job = Job("* * 1w * *") assert not job.allowed_every_dom assert not job.allowed_last_dom assert job.allowed_dom == set() assert job.allowed_wdom == set([1]) assert job._should_run_at(d(2019, 3, 1)) # was fri assert not job._should_run_at(d(2019, 6, 1)) # was sat assert job._should_run_at(d(2019, 6, 3)) # was mon