Esempio n. 1
0
 def test_DependencyError(self, reporter, dep_manager):
     t1 = Task("taskX", [(my_print, ["out a"])], file_dep=["i_dont_exist"])
     my_runner = runner.Runner(dep_manager, reporter)
     assert False == my_runner.select_task(ExecNode(t1, None), {})
     assert ('start', t1) == reporter.log.pop(0)
     assert ('fail', t1) == reporter.log.pop(0)
     assert not reporter.log
Esempio n. 2
0
    def test_getargs_ok(self, reporter, dep_manager):
        def ok():
            return {'x': 1}

        def check_x(my_x):
            return my_x == 1

        t1 = Task('t1', [(ok, )])
        n1 = ExecNode(t1, None)
        t2 = Task('t2', [(check_x, )], getargs={'my_x': ('t1', 'x')})
        n2 = ExecNode(t2, None)
        tasks_dict = {'t1': t1, 't2': t2}
        my_runner = runner.Runner(dep_manager, reporter)

        # t2 gives chance for setup tasks to be executed
        assert False == my_runner.select_task(n2, tasks_dict)
        assert ('start', t2) == reporter.log.pop(0)

        # execute task t1 to calculate value
        assert True == my_runner.select_task(n1, tasks_dict)
        assert ('start', t1) == reporter.log.pop(0)
        t1_result = my_runner.execute_task(t1)
        assert ('execute', t1) == reporter.log.pop(0)
        my_runner.process_task_result(n1, t1_result)
        assert ('success', t1) == reporter.log.pop(0)

        # t2.options are set on select_task
        assert True == my_runner.select_task(n2, tasks_dict)
        assert not reporter.log
        assert {'my_x': 1} == t2.options
Esempio n. 3
0
    def test_getargs_fail(self, reporter, dep_manager):
        # invalid getargs. Exception wil be raised and task will fail
        def check_x(my_x):
            return True

        t1 = Task('t1', [lambda: True])
        n1 = ExecNode(t1, None)
        t2 = Task('t2', [(check_x, )], getargs={'my_x': ('t1', 'x')})
        n2 = ExecNode(t2, None)
        tasks_dict = {'t1': t1, 't2': t2}
        my_runner = runner.Runner(dep_manager, reporter)

        # t2 gives chance for setup tasks to be executed
        assert False == my_runner.select_task(n2, tasks_dict)
        assert ('start', t2) == reporter.log.pop(0)

        # execute task t1 to calculate value
        assert True == my_runner.select_task(n1, tasks_dict)
        assert ('start', t1) == reporter.log.pop(0)
        t1_result = my_runner.execute_task(t1)
        assert ('execute', t1) == reporter.log.pop(0)
        my_runner.process_task_result(n1, t1_result)
        assert ('success', t1) == reporter.log.pop(0)

        # select_task t2 fails
        assert False == my_runner.select_task(n2, tasks_dict)
        assert ('fail', t2) == reporter.log.pop(0)
        assert not reporter.log
Esempio n. 4
0
 def test_alwaysExecute(self, reporter, dep_manager):
     t1 = Task("taskX", [(my_print, ["out a"])])
     my_runner = runner.Runner(dep_manager, reporter, always_execute=True)
     my_runner.dep_manager.save_success(t1)
     assert True == my_runner.select_task(ExecNode(t1, None), {})
     assert ('start', t1) == reporter.log.pop(0)
     assert not reporter.log
Esempio n. 5
0
 def test_ignore(self, reporter, dep_manager):
     t1 = Task("taskX", [(my_print, ["out a"])])
     my_runner = runner.Runner(dep_manager, reporter)
     my_runner.dep_manager.ignore(t1)
     assert False == my_runner.select_task(ExecNode(t1, None), {})
     assert ('start', t1) == reporter.log.pop(0)
     assert ('ignore', t1) == reporter.log.pop(0)
     assert not reporter.log
Esempio n. 6
0
 def test_upToDate(self, reporter, dep_manager):
     t1 = Task("taskX", [(my_print, ["out a"])], file_dep=[__file__])
     my_runner = runner.Runner(dep_manager, reporter)
     my_runner.dep_manager.save_success(t1)
     assert False == my_runner.select_task(ExecNode(t1, None), {})
     assert ('start', t1) == reporter.log.pop(0)
     assert ('up-to-date', t1) == reporter.log.pop(0)
     assert not reporter.log
Esempio n. 7
0
 def test_alwaysExecute(self, reporter, dep_manager):
     t1 = Task("taskX", [(my_print, ["out a"])], uptodate=[True])
     my_runner = runner.Runner(dep_manager, reporter, always_execute=True)
     my_runner.dep_manager.save_success(t1)
     n1 = ExecNode(t1, None)
     assert True == my_runner.select_task(n1, {})
     # run_status is set to run even if task is up-to-date
     assert n1.run_status == 'run'
     assert ('start', t1) == reporter.log.pop(0)
     assert not reporter.log
Esempio n. 8
0
 def test_withSetup(self, reporter, dep_manager):
     t1 = Task("taskX", [(my_print, ["out a"])], setup=["taskY"])
     my_runner = runner.Runner(dep_manager, reporter)
     # defer execution
     n1 = ExecNode(t1, None)
     assert False == my_runner.select_task(n1, {})
     assert ('start', t1) == reporter.log.pop(0)
     assert not reporter.log
     # trying to select again
     assert True == my_runner.select_task(n1, {})
     assert not reporter.log
Esempio n. 9
0
 def test_reporter_runtime_error(self, reporter, dep_manager):
     t1 = Task('t1', [], calc_dep=['t2'])
     t2 = Task('t2', [lambda: {'file_dep':[1]}])
     my_runner = runner.Runner(dep_manager, reporter)
     my_runner.run_all(TaskDispatcher({'t1':t1, 't2':t2}, [], ['t1', 't2']))
     assert runner.ERROR == my_runner.final_result
     assert ('start', t2) == reporter.log.pop(0)
     assert ('execute', t2) == reporter.log.pop(0)
     assert ('success', t2) == reporter.log.pop(0)
     assert ('runtime_error',) == reporter.log.pop(0)
     assert not reporter.log
Esempio n. 10
0
    def test_reverse_order(self, reporter, depfile_name):
        def do_nothing():
            pass

        t1 = Task('t1', [], teardown=[do_nothing])
        t2 = Task('t2', [], teardown=[do_nothing])
        my_runner = runner.Runner(Dependency, depfile_name, reporter)
        my_runner.teardown_list = [t1, t2]
        my_runner.teardown()
        assert ('teardown', t2) == reporter.log.pop(0)
        assert ('teardown', t1) == reporter.log.pop(0)
        assert not reporter.log
Esempio n. 11
0
 def test_reverse_order(self, reporter, dep_manager):
     def do_nothing():pass
     t1 = Task('t1', [], teardown=[do_nothing])
     t2 = Task('t2', [], teardown=[do_nothing])
     my_runner = runner.Runner(dep_manager, reporter)
     my_runner.teardown_list = [t1, t2]
     t1.execute(my_runner.stream)
     t2.execute(my_runner.stream)
     my_runner.teardown()
     assert ('teardown', t2) == reporter.log.pop(0)
     assert ('teardown', t1) == reporter.log.pop(0)
     assert not reporter.log
Esempio n. 12
0
 def test_ok(self, reporter, dep_manager):
     touched = []
     def touch():
         touched.append(1)
     t1 = Task('t1', [], teardown=[(touch,)])
     my_runner = runner.Runner(dep_manager, reporter)
     my_runner.teardown_list = [t1]
     t1.execute(my_runner.stream)
     my_runner.teardown()
     assert 1 == len(touched)
     assert ('teardown', t1) == reporter.log.pop(0)
     assert not reporter.log
Esempio n. 13
0
    def test_getargs_dict(self, reporter, dep_manager):
        def ok(): return {'x':1}
        t1 = Task('t1', [(ok,)])
        n1 = ExecNode(t1, None)
        t2 = Task('t2', None, getargs={'my_x':('t1', None)})
        tasks_dict = {'t1': t1, 't2':t2}
        my_runner = runner.Runner(dep_manager, reporter)
        t1_result = my_runner.execute_task(t1)
        my_runner.process_task_result(n1, t1_result)

        # t2.options are set on _get_task_args
        my_runner._get_task_args(t2, tasks_dict)
        assert {'my_x': {'x':1}} == t2.options
Esempio n. 14
0
    def test_ok(self, reporter, depfile_name):
        touched = []

        def touch():
            touched.append(1)

        t1 = Task('t1', [], teardown=[(touch, )])
        my_runner = runner.Runner(Dependency, depfile_name, reporter)
        my_runner.teardown_list = [t1]
        my_runner.teardown()
        assert 1 == len(touched)
        assert ('teardown', t1) == reporter.log.pop(0)
        assert not reporter.log
Esempio n. 15
0
    def test_getargs_group_value(self, reporter, dep_manager):
        def ok(): return {'x':1}
        t1 = Task('t1', None, task_dep=['t1:a'], has_subtask=True)
        t1a = Task('t1:a', [(ok,)], subtask_of='t1')
        t2 = Task('t2', None, getargs={'my_x':('t1', 'x')})
        tasks_dict = {'t1': t1, 't1a':t1a, 't2':t2}
        my_runner = runner.Runner(dep_manager, reporter)
        t1a_result = my_runner.execute_task(t1a)
        my_runner.process_task_result(ExecNode(t1a, None), t1a_result)

        # t2.options are set on _get_task_args
        my_runner._get_task_args(t2, tasks_dict)
        assert {'my_x': {'a':1} } == t2.options
Esempio n. 16
0
    def test_errors(self, reporter, depfile_name):
        def raise_something(x):
            raise Exception(x)

        t1 = Task('t1', [], teardown=[(raise_something, ['t1 blow'])])
        t2 = Task('t2', [], teardown=[(raise_something, ['t2 blow'])])
        my_runner = runner.Runner(Dependency, depfile_name, reporter)
        my_runner.teardown_list = [t1, t2]
        my_runner.teardown()
        assert ('teardown', t2) == reporter.log.pop(0)
        assert ('cleanup_error', ) == reporter.log.pop(0)
        assert ('teardown', t1) == reporter.log.pop(0)
        assert ('cleanup_error', ) == reporter.log.pop(0)
        assert not reporter.log
Esempio n. 17
0
 def test_reporter_runtime_error(self, reporter, depfile_name):
     t1 = Task('t1', [], calc_dep=['t2'])
     t2 = Task('t2', [lambda: {'file_dep': [1]}])
     my_runner = runner.Runner(Dependency, depfile_name, reporter)
     my_runner.run_all(
         TaskDispatcher({
             't1': t1,
             't2': t2
         }, [], ['t1', 't2']))
     assert ('start', t2) == reporter.log.pop(0)
     assert ('execute', t2) == reporter.log.pop(0)
     assert ('success', t2) == reporter.log.pop(0)
     assert ('runtime_error', ) == reporter.log.pop(0)
     assert not reporter.log
Esempio n. 18
0
 def test_errors(self, reporter, dep_manager):
     def raise_something(x):
         raise Exception(x)
     t1 = Task('t1', [], teardown=[(raise_something,['t1 blow'])])
     t2 = Task('t2', [], teardown=[(raise_something,['t2 blow'])])
     my_runner = runner.Runner(dep_manager, reporter)
     my_runner.teardown_list = [t1, t2]
     t1.execute(my_runner.stream)
     t2.execute(my_runner.stream)
     my_runner.teardown()
     assert ('teardown', t2) == reporter.log.pop(0)
     assert ('cleanup_error',) == reporter.log.pop(0)
     assert ('teardown', t1) == reporter.log.pop(0)
     assert ('cleanup_error',) == reporter.log.pop(0)
     assert not reporter.log
Esempio n. 19
0
 def test_dependency_error_after_execution(self, dep_manager):
     t1 = Task("t1", [(my_print, ["out a"] )],
               file_dep=["i_dont_exist"], targets=['not_there'])
     reporter = FakeReporter(with_exceptions=True)
     my_runner = runner.Runner(dep_manager, reporter)
     # Missing file_dep is not caught because check is short-circuited by
     # missing target.
     my_runner.run_tasks(TaskDispatcher({'t1':t1}, [], ['t1']))
     assert runner.ERROR == my_runner.finish()
     print(reporter.log)
     assert ('start', t1) == reporter.log.pop(0)
     assert ('execute', t1) == reporter.log.pop(0)
     fail_log = reporter.log.pop(0)
     assert ('fail', t1) == fail_log[:2]
     assert "Dependent file 'i_dont_exist' does not exist" in str(fail_log[2])
     assert not reporter.log
Esempio n. 20
0
    def test_getargs_group(self, reporter, depfile_name):
        def ok():
            return {'x': 1}

        t1 = Task('t1', None, task_dep=['t1:a'], has_subtask=True)
        t1a = Task('t1:a', [(ok, )], is_subtask=True)
        t2 = Task('t2', None, getargs={'my_x': ('t1', None)})
        tasks_dict = {'t1': t1, 't1a': t1a, 't2': t2}
        my_runner = runner.Runner(Dependency, depfile_name, reporter)
        t1a_result = my_runner.execute_task(t1a)
        my_runner.process_task_result(ExecNode(t1a, None), t1a_result)

        # t2.options are set on _get_task_args
        assert {} == t2.options
        my_runner._get_task_args(t2, tasks_dict)
        assert {'my_x': {'a': {'x': 1}}} == t2.options
Esempio n. 21
0
 def testInit(self, reporter, dep_manager):
     my_runner = runner.Runner(dep_manager, reporter)
     assert False == my_runner._stop_running
     assert runner.SUCCESS == my_runner.final_result
Esempio n. 22
0
 def test_noSetup_ok(self, reporter, dep_manager):
     t1 = Task("taskX", [(my_print, ["out a"])])
     my_runner = runner.Runner(dep_manager, reporter)
     assert True == my_runner.select_task(ExecNode(t1, None), {})
     assert ('start', t1) == reporter.log.pop(0)
     assert not reporter.log
Esempio n. 23
0
 def testInit(self, reporter, depfile_name):
     my_runner = runner.Runner(Dependency, depfile_name, reporter)
     assert False == my_runner._stop_running
     assert runner.SUCCESS == my_runner.final_result
Esempio n. 24
0
 def test_ready(self, reporter, depfile_name):
     t1 = Task("taskX", [(my_print, ["out a"])])
     my_runner = runner.Runner(Dependency, depfile_name, reporter)
     assert True == my_runner.select_task(ExecNode(t1, None), {})
     assert ('start', t1) == reporter.log.pop(0)
     assert not reporter.log