示例#1
0
 def testChangeOrder_AddJustOnce(self):
     tasks = [Task("taskX",None,task_dep=["taskY"]),
              Task("taskY",None,)]
     tc = TaskControl(tasks)
     tc.process(None)
     assert [tasks[1], tasks[0]] == [x for x in tc._add_task(0, 'taskX', False)]
     # both tasks were already added. so no tasks left..
     assert [] == [x for x in tc._add_task(0, 'taskY', False)]
示例#2
0
 def testParallel(self):
     tasks = [Task("taskX",None,task_dep=["taskY"]),
              Task("taskY",None)]
     tc = TaskControl(tasks)
     tc.process(None)
     gen1 = tc._add_task(0, "taskX", False)
     assert tasks[1] == gen1.next()
     # gen2 wont get any task, because it was already being processed
     gen2 = tc._add_task(1, "taskY", False)
     py.test.raises(StopIteration, gen2.next)
示例#3
0
 def testDetectCyclicReference(self):
     tasks = [Task("taskX",None,task_dep=["taskY"]),
              Task("taskY",None,task_dep=["taskX"])]
     tc = TaskControl(tasks)
     tc.process(None)
     gen = tc._add_task(0, "taskX", False)
     py.test.raises(InvalidDodoFile, gen.next)
示例#4
0
 def testSetupInvalid(self):
     tasks = [Task("taskX",None,setup=["taskZZZZZZZZ"]),
              Task("taskY",None,)]
     tc = TaskControl(tasks)
     tc.process(['taskX'])
     gen = tc._add_task(0, 'taskX', False)
     assert tasks[0] == gen.next() # tasks with setup are yield twice
     tasks[0].run_status = 'run' # should be executed
     py.test.raises(InvalidTask, gen.next) # execute setup before
示例#5
0
 def testSetupTasksDontRun(self):
     tasks = [Task("taskX",None,setup=["taskY"]),
              Task("taskY",None,)]
     tc = TaskControl(tasks)
     tc.process(['taskX'])
     gen = tc._add_task(0, 'taskX', False)
     assert tasks[0] == gen.next()
     # X is up-to-date
     tasks[0].run_status = 'up-to-date'
     py.test.raises(StopIteration, gen.next)
示例#6
0
 def testSetupTasksRun(self):
     tasks = [Task("taskX",None,setup=["taskY"]),
              Task("taskY",None,)]
     tc = TaskControl(tasks)
     tc.process(['taskX'])
     gen = tc._add_task(0, 'taskX', False)
     assert tasks[0] == gen.next() # tasks with setup are yield twice
     tasks[0].run_status = 'run' # should be executed
     assert tasks[1] == gen.next() # execute setup before
     assert tasks[0] == gen.next() # second time, ok
     py.test.raises(StopIteration, gen.next) # nothing left
示例#7
0
 def testIncludeSetup(self):
     # with include_setup yield all tasks without waiting for setup tasks to
     # be ready
     tasks = [Task("taskX",None,setup=["taskY"]),
              Task("taskY",None,)]
     tc = TaskControl(tasks)
     tc.process(['taskX'])
     gen = tc._add_task(0, 'taskX', True) # <== include_setup
     assert tasks[0] == gen.next() # tasks with setup are yield twice
     assert tasks[1] == gen.next() # execute setup before
     assert tasks[0] == gen.next() # second time, ok
     py.test.raises(StopIteration, gen.next) # nothing left
示例#8
0
 def testCalcDep(self):
     def get_deps():
         print "gget"
         return {'file_dep': ('a', 'b')}
     tasks = [Task("taskX", None, calc_dep=['task_dep']),
              Task("task_dep", [(get_deps,)]),
              ]
     tc = TaskControl(tasks)
     tc.process(['taskX'])
     gen = tc._add_task(0, 'taskX', False)
     assert tasks[1] == gen.next()
     assert isinstance(gen.next(), WaitRunTask)
     tasks[1].execute()
     assert tasks[0] == gen.next()
     assert set(['a', 'b']) == tasks[0].file_dep
示例#9
0
 def testWaitSetup(self):
     tasks = [Task("taskX",None,setup=["taskY"]),
              Task("taskY",None,)]
     tc = TaskControl(tasks)
     tc.process(['taskX'])
     gen = tc._add_task(0, 'taskX', False)
     assert tasks[0] == gen.next() # tasks with setup are yield twice
     # wait for taskX run_status
     wait = gen.next()
     assert wait.task_name == 'taskX'
     assert isinstance(wait, WaitSelectTask)
     tasks[0].run_status = 'run' # should be executed
     assert tasks[1] == gen.next() # execute setup before
     assert tasks[0] == gen.next() # second time, ok
     py.test.raises(StopIteration, gen.next) # nothing left
示例#10
0
 def testAddNotSelected(self):
     tasks = [Task("taskX",None,task_dep=["taskY"]),
              Task("taskY",None,)]
     tc = TaskControl(tasks)
     tc.process(['taskX'])
     assert [tasks[1], tasks[0]] == [x for x in tc._add_task(0, 'taskX',False)]