def test_format_args_task_config(self): config = {'lib_target': 'library'} project = Project.from_dir(Path('/path/to/project')) engine = Engine(project) module = Language(None, 'java') task = Task('myTask', func_task_config) mock_get_config = MagicMock() mock_get_config.return_value = config project.get_config = mock_get_config # noinspection PyProtectedMember args, kwargs = engine._format_args(module, task) assert args == [config] assert kwargs == {} task.function = func_named_task_config # noinspection PyProtectedMember args, kwargs = engine._format_args(module, task) assert args == [] assert kwargs == {'task_config': config}
def _execute_task(self, module: Language, task: Task): """ A function for executing a task. This is nothing more than determining the proper arguments and then passing them to the task's function. :param module: the module that the task belongs to. :param task: the task to execute. """ args, kwargs = self._format_args(module, task) task.function(*args, **kwargs)
def test_construction(self): task = Task('task', None) assert task.name == 'task' assert task.function is None assert task.require == [] task = Task('task', None, require=['pre-task']) assert task.name == 'task' assert task.function is None assert task.require == ['pre-task']
def test_format_args_default_args(self): project = Project.from_dir(Path('/path/to/project')) engine = Engine(project) module = Language(None, 'java') task = Task('myTask', func_default_args) # noinspection PyProtectedMember args, kwargs = engine._format_args(module, task) assert args == [1] assert kwargs == {} task.function = func_named_default_args # noinspection PyProtectedMember args, kwargs = engine._format_args(module, task) assert args == [] assert kwargs == {'mine': 1}
def test_format_args_dependencies(self): project = Project.from_dir(Path('/path/to/project')) engine = Engine(project) module = Language(None, 'java') task = Task('myTask', func_dependencies) module.resolver = MagicMock(return_value=None) # noinspection PyProtectedMember args, kwargs = engine._format_args(module, task) assert args == [[]] assert kwargs == {} task.function = func_named_dependencies # noinspection PyProtectedMember args, kwargs = engine._format_args(module, task) assert args == [] assert kwargs == {'dependencies': []}
def test_execute_tasks(self): project = Project.from_dir(Path('/path/to/project')) engine = Engine(project) module = Language(None, 'java') et = MagicMock() task1 = Task('task1', MagicMock()) task2 = Task('task2', None) task3 = Task('task3', MagicMock()) tasks = [(module, task1), (module, task2), (module, task3)] engine._execute_task = et with patch('builder.engine.out') as mock_out: # noinspection PyProtectedMember engine._execute_tasks(tasks) assert et.mock_calls == [call(module, task1), call(module, task3)] assert mock_out.mock_calls == [ call('--> task1', fg='bright_green'), call('--> task2', fg='bright_green'), call('--> task3', fg='bright_green') ]
def test_get_task_config(self): config = {'field': 'value'} project = Project.from_dir(Path('/path/to/project')) engine = Engine(project) task = Task('myTask', None) mock_get_config = MagicMock() mock_get_config.return_value = config project.get_config = mock_get_config # noinspection PyProtectedMember assert engine._get_task_config(task) == config assert mock_get_config.mock_calls == [call('myTask', None, None)]
def test_format_args_dependencies_not_accepted(self): project = Project.from_dir(Path('/path/to/project')) dependency = Dependency('name', { 'location': 'remote', 'version': '1.2.3', 'scope': 'myTask' }) project.get_dependencies()._dependencies = {'name': dependency} engine = Engine(project) module = Language(None, 'java') task = Task('myTask', func_no_args) with patch('builder.engine.end') as mock_end: # noinspection PyProtectedMember _, _ = engine._format_args(module, task) assert mock_end.mock_calls == [ call( 'Dependencies were specified for task myTask but it does not accept dependencies.' ) ]
def define_language(lang: Language): lang.tasks = [Task('task', None)]
def _create_language_with_tasks(language: str, task_names: Sequence[str]) -> Language: tasks = [Task(name, None) for name in task_names] return _create_language_module(language, tasks)