def test_ok(self): getargs = {'x' : ('t1','x'), 'y': ('t2','z')} t = task.Task('t3', None, getargs=getargs) assert len(t.uptodate) == 2 assert ['t1', 't2'] == sorted([t.uptodate[0][0].dep_name, t.uptodate[1][0].dep_name])
def test_task_dep(self): my_task = task.Task("Task X", ["taskcmd"], task_dep=["123", "4*56"]) assert ["123"] == my_task.task_dep assert ["4*56"] == my_task.wild_dep
def test_targets_can_be_path(self): my_task = task.Task("Task X", ["taskcmd"], targets=["123", Path("456"), PurePath("789")]) assert ["123", "456", "789"] == my_task.targets
def test_str(self): t = task.Task("Task X", ["taskcmd"], uptodate=['my-cmd xxx']) assert t.uptodate[0] == ('my-cmd xxx', [], {})
def test_file_dep_path(self): my_task = task.Task("Task X", ["taskcmd"], file_dep=["123", Path("456"), PurePath("789")]) assert {"123", "456", "789"} == my_task.file_dep
def test_setup(self): t = task.Task("task5", ['action'], setup=["task2"]) assert ["task2"] == t.setup_tasks
def test_NoneIgnored(self): t = task.Task("Task X", ["taskcmd"], uptodate=[None]) assert t.uptodate == [(None, None, None)]
def test_many(self): t = task.Task("taskX",["%s hi_stdout hi2" % PROGRAM, "%s hi_list hi6" % PROGRAM]) t.execute() got = "".join([a.out for a in t.actions]) assert "hi_stdouthi_list" == got, repr(got)
def test_fail_second(self): t = task.Task("taskX", ["%s 1 2" % PROGRAM, "%s 1 2 3" % PROGRAM]) got = t.execute() assert isinstance(got, TaskError)
def test_success(self): t = task.Task("taskX", [PROGRAM]) t.execute()
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.execute() assert "hi_listhi2" == t.result
def test_repr(self): t = task.Task("taskX",None,('t1','t2')) assert "<Task: taskX>" == repr(t), repr(t)
def test_custom_title(self): t = task.Task("MyName",["MyAction"], title=(lambda x: "X%sX" % x.name)) assert "X%sX"%str(t.name) == t.title(), t.title()
def test_title(self): t = task.Task("MyName",["MyAction"]) assert "MyName" == t.title()
def test_groupTask(self): # group tasks have no action t = task.Task("taskX", None) assert t.actions == []
def test_fail(self): def my_raise(): raise Exception('hoho') t = task.Task('t1', [], teardown=[(my_raise,)]) got = t.execute_teardown() assert isinstance(got, CatchedException)
def test_dependencySequenceIsValid(self): task.Task("Task X", ["taskcmd"], file_dep=["123","456"])
def test_clean_non_existent_targets(self): t = task.Task('xxx', None, targets=["i_dont_exist"], clean=True) t.clean(StringIO(), False)
def test_execute_value_savers(self): t = task.Task("Task X", ["taskcmd"]) t.value_savers.append(lambda: {'v1':1}) t.save_extra_values() assert 1 == t.values['v1']
def test_no_doc(self): t = task.Task("name", ["action"]) assert '' == t.doc
def test_callable_function(self): def custom_check(): return True t = task.Task("Task X", ["taskcmd"], uptodate=[custom_check]) assert t.uptodate[0] == (custom_check, [], {})
def test_single_line(self): t = task.Task("name", ["action"], doc=" i am doc") assert "i am doc" == t.doc
def test_dependencyStringIsFile(self): my_task = task.Task("Task X", ["taskcmd"], file_dep=["123", "456"]) assert set(["123", "456"]) == my_task.file_dep
def test_multiple_lines(self): t = task.Task("name", ["action"], doc="i am doc \n with many lines\n") assert "i am doc" == t.doc
def test_file_dep_unicode(self): unicode_name = "中文" my_task = task.Task("Task X", ["taskcmd"], file_dep=[unicode_name]) assert unicode_name in my_task.file_dep
def test_start_with_empty_lines(self): t = task.Task("name", ["action"], doc="\n\n i am doc \n") assert "i am doc" == t.doc
def test_calc_dep(self): my_task = task.Task("Task X", ["taskcmd"], calc_dep=["123"]) assert set(["123"]) == my_task.calc_dep
def test_just_new_line(self): t = task.Task("name", ["action"], doc=" \n \n\n") assert "" == t.doc
def test_delayed_after_execution(self): # after `executed` creates an implicit task_dep delayed = task.DelayedLoader(lambda: None, executed='foo') t1 = task.Task('bar', None, loader=delayed) assert t1.task_dep == ['foo']
def test_tuple(self): def custom_check(pos_arg, xxx=None): return True t = task.Task("Task X", ["taskcmd"], uptodate=[(custom_check, [123], {'xxx':'yyy'})]) assert t.uptodate[0] == (custom_check, [123], {'xxx':'yyy'})