def test_fail(self): def my_raise(): raise Exception('hoho') t = task.Task('t1', [], teardown=[(my_raise,)]) t.execute(Stream(0)) got = t.execute_teardown(Stream(0)) assert isinstance(got, CatchedException)
def test_ok(self): got = [] def put(x): got.append(x) t = task.Task('t1', [], teardown=[(put, [1]), (put, [2])]) t.execute(Stream(0)) assert None == t.execute_teardown(Stream(0)) assert [1,2] == got
def test_values(self): def return_dict(d): return d # task.result is the value of last action t = task.Task('t1', [(return_dict, [{'x':5}]), (return_dict, [{'y':10}]),]) t.execute(Stream(0)) assert {'x':5, 'y':10} == t.values
def test_many(self): t = task.Task("taskX",["%s hi_stdout hi2" % PROGRAM, "%s hi_list hi6" % PROGRAM]) t.dep_changed = [] t.execute(Stream(0)) got = "".join([a.out for a in t.actions]) assert "hi_stdouthi_list" == got, repr(got)
def test_calc_dep(self): def calc_intermediate(): return {'file_dep': ['intermediate']} tasks = {'t1': Task('t1', None, calc_dep=['t2']), 't2': Task('t2', [calc_intermediate]), 't3': Task('t3', None, targets=['intermediate']), } td = TaskDispatcher(tasks, {'intermediate': 't3'}, None) n1 = td._gen_node(None, 't1') n2 = n1.step() assert tasks['t2'] == n2.task assert 'wait' == n1.step() # execute t2 to process calc_dep tasks['t2'].execute(Stream(0)) td.nodes['t2'].run_status = 'done' td._update_waiting(n2) n3 = n1.step() assert tasks['t3'] == n3.task assert 'intermediate' in tasks['t1'].file_dep assert 't3' in tasks['t1'].task_dep # t3 was added by calc dep assert 'wait' == n1.step() n3.run_status = 'done' td._update_waiting(n3) assert tasks['t1'] == n1.step()
def test_result(self): # task.result is the value of last action t = task.Task('t1', ["%s hi_list hi1" % PROGRAM, "%s hi_list hi2" % PROGRAM]) t.dep_changed = [] t.execute(Stream(0)) assert "hi_listhi2" == t.result
def execute_plugin_tasks(plugin: Task, verbosity: int = 0): tasks = generate_tasks(plugin.name, plugin.gen_tasks()) stream = Stream(verbosity) for t in tasks: catched = t.execute(stream) if catched: raise Exception("Task error for '{}'\n{}".format( t.name, catched.get_msg()))
def test_mixed(self): def my_print(msg): print(msg, end='') t = task.Task("taskX",["%s hi_stdout hi2" % PROGRAM, (my_print,['_PY_']), "%s hi_list hi6" % PROGRAM]) t.dep_changed = [] t.execute(Stream(0)) got = "".join([a.out for a in t.actions]) assert "hi_stdout_PY_hi_list" == got, repr(got)
def test_options(self): # when task is created, options contain the default values p1 = {'name':'p1', 'default':'p1-default'} p2 = {'name':'p2', 'default':'', 'short':'m'} t = task.Task("MyName", None, params=[p1, p2], pos_arg='pos') t.execute(Stream(0)) assert 'p1-default' == t.options['p1'] assert '' == t.options['p2'] assert 'pos' == t.pos_arg assert None == t.pos_arg_val # always uninitialized
def test_task_verbosity_not_specified(self): # default v0 = Stream(None) assert v0.effective_verbosity(None) == 1 v2 = Stream(2) assert v2.effective_verbosity(None) == 2
def test_from_task(self): # use value from task, not global from Stream v0 = Stream(0) assert v0.effective_verbosity(1) == 1 assert v0.effective_verbosity(2) == 2 v2 = Stream(2) assert v2.effective_verbosity(0) == 0 assert v2.effective_verbosity(1) == 1
def test(self): def sample(): print("this is printed") t1 = Task("t1", [(sample, )]) result = reporter.TaskResult(t1) result.start() t1.execute(Stream(0)) result.set_result('success') got = result.to_dict() assert t1.name == got['name'], got assert 'success' == got['result'], got assert "this is printed\n" == got['out'], got assert "" == got['err'], got assert got['started'] assert 'elapsed' in got
def test_fail_second(self): t = task.Task("taskX", ["%s 1 2" % PROGRAM, "%s 1 2 3" % PROGRAM]) got = t.execute(Stream(0)) assert isinstance(got, TaskError)
def test_force_global(self): # use value from task, not global from Stream v0 = Stream(0, force_global=True) assert v0.effective_verbosity(2) == 0 v2 = Stream(2, force_global=True) assert v2.effective_verbosity(0) == 2
def test_success(self): t = task.Task("taskX", [PROGRAM]) t.execute(Stream(0))