def test_exclude_tasks_passing_none(self): t1 = self.MockTask() st = self.MockTask(deps=[t1]) wf = Workflow(taskname='w1', starttask=st, exclude_tasks=None) self.assertEqual(wf.tasks, [(0, t1, False), (1, st, False)]) wf.execute() self.assertEqual(self.executed, [t1, st])
def test_exclude_tasks_by_position(self): t1 = self.MockTask() st = self.MockTask(deps=[t1]) wf = Workflow(taskname='w1', starttask=st, exclude_tasks=['1']) self.assertEqual(wf.tasks, [(0, t1, False), (1, st, True)]) wf.execute() self.assertEqual(self.executed, [t1])
def test_simple_workflow(self): t1 = self.MockTask() st = self.MockTask(deps=[t1]) wf = Workflow(starttask=st) self.assertEqual(wf.tasks, [(0, t1, False), (1, st, False)]) wf.execute() self.assertEqual(self.executed, [t1, st])
def test_workflow_used_as_task(self): t0 = self.MockTask() t1 = self.MockTask(deps=[t0]) w1 = Workflow(starttask=t1) t2 = self.MockTask(deps=[w1]) w2 = Workflow(starttask=t2) self.assertEqual(w2.tasks, [(0, w1, False), (1, t2, False)]) w2.execute() self.assertEqual(self.executed, [t0, t1, t2])
def test_include_tasks_by_classname(self): class IncludeMe(self.MockTask): pass t1 = self.MockTask() st = IncludeMe(deps=[t1]) wf = Workflow(starttask=st, include_tasks=['IncludeMe']) self.assertEqual(wf.tasks, [(0, t1, True), (1, st, False)]) wf.execute() self.assertEqual(self.executed, [st])
def test_exclude_tasks_by_classname(self): class Skipme(self.MockTask): pass t1 = self.MockTask() st = Skipme(deps=[t1]) wf = Workflow(starttask=st, exclude_tasks=['Skipme']) self.assertEqual(wf.tasks, [(0, t1, False), (1, st, True)]) wf.execute() self.assertEqual(self.executed, [t1])
def test_exitworkflow(self): class FailTask(Task): def execute(self): raise ExitWorkflow('FailTask', ExitWorkflow.EXIT_CANCELLED) wf = Workflow(starttask=FailTask()) wf.execute() # doesn't fail even across sub workflows wf = Workflow(starttask=Workflow(starttask=FailTask())) wf.execute() def create_mock(status): class MockExitTask(Task): def execute(self): raise ExitWorkflow('MockExitTask', status) return MockExitTask # doesn't fail, and finish OK wf = Workflow(starttask=create_mock(ExitWorkflow.EXIT_STOPPED)) wf.execute() # will fail throwing ExitWorkflow exception wf = Workflow(starttask=create_mock(ExitWorkflow.EXIT_FAILED)) self.assertRaises(ExitWorkflow, wf.execute)