def test__run(self): job = Job(DBH.job) # No command defined, should fail. self.assertFalse(job.run()) tmp_file = os.path.join(TMP_DIR, 'test__run_output.txt') text = 'Hello World!' script = """ #!/usr/bin/python import sys def main(): with open('{file}', 'w') as f: f.write("{text}") f.write("\\n") for c, arg in enumerate(sys.argv): if c == 0: continue f.write(str(c) + ': ' + arg + "\\n") if __name__ == '__main__': main() """.format(file=tmp_file, text=text) script_name = os.path.join(TMP_DIR, 'test__run.py') with open(script_name, 'w') as f: f.write(script.strip()) os.chmod(script_name, 0700) # Test without args or options job.command = script_name self.assertEqual(job.run(), 0) expect = """Hello World! """ got = '' with open(tmp_file, 'r') as f: got = f.read() self.assertEqual(got, expect) # Test with args or options job.command = "{script} -v -a delete 123".format(script=script_name) self.assertEqual(job.run(), 0) expect = """Hello World! 1: -v 2: -a 3: delete 4: 123 """ got = '' with open(tmp_file, 'r') as f: got = f.read() self.assertEqual(got, expect)
def test__top_job(self): queue = Queue(DBH.job) if len(queue.jobs()) > 0: for j in queue.jobs(): j.remove() self.assertEqual(len(queue.jobs()), 0) self.assertRaises(QueueEmptyError, queue.top_job) job_1 = Job(DBH.job, start='2010-01-01 10:00:00', priority=0).add() job_2 = Job(DBH.job, start='2010-01-01 10:00:01', priority=-1).add() job_3 = Job(DBH.job, start='2010-01-01 10:00:02', priority=1).add() job_4 = Job(DBH.job, start='2999-12-31 23:59:59', priority=1).add() job = queue.top_job() self.assertEqual(job.id, job_3.id) job_1.remove() job_2.remove() job_3.remove() job_4.remove()