예제 #1
0
    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}
예제 #2
0
    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)
예제 #3
0
    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']
예제 #4
0
    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}
예제 #5
0
    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': []}
예제 #6
0
    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')
        ]
예제 #7
0
    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)]
예제 #8
0
    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.'
            )
        ]
예제 #9
0
 def define_language(lang: Language):
     lang.tasks = [Task('task', None)]
예제 #10
0
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)