示例#1
0
    def test_resolve_no_dependencies(self):
        language = Language({}, 'lang')
        context = DependencyContext([], language, Configuration({}, [], None))

        language.resolver = MagicMock()

        assert context.resolve() == []
示例#2
0
    def test_resolve_duplicates(self):
        dep = _make_dep()
        path = Path('/path/to/file.txt')
        language = Language({}, 'lang')
        path_set = DependencyPathSet(dep, path)
        context = DependencyContext([dep, dep], language,
                                    Configuration({}, [], None))

        language.resolver = MagicMock(return_value=path_set)

        assert context.resolve() == [path_set]

        language.resolver.assert_called_once_with(context, dep)
示例#3
0
    def test_resolve_to_nothing(self):
        dep = _make_dep(name='resolve-to-nothing')
        language = Language({}, 'lang')
        context = DependencyContext([dep], language, Configuration({}, [],
                                                                   None))

        language.resolver = MagicMock(return_value=None)

        with pytest.raises(ValueError) as info:
            context.resolve()

        assert info.value.args[0] == 'Dependency path:\nresolve-to-nothing:resolve-to-nothing:1.2.3\nThe dependency, ' \
                                     'resolve-to-nothing:resolve-to-nothing:1.2.3, could not be resolved.'

        language.resolver.assert_called_once_with(context, dep)
示例#4
0
    def test_resolve_version_mismatch(self):
        dep1 = _make_dep(version='1.2.3')
        dep2 = _make_dep(version='4.5.6')
        path = Path('/path/to/file.txt')
        language = Language({}, 'lang')
        path_set = DependencyPathSet(dep1, path)
        context = DependencyContext([dep1, dep2], language,
                                    Configuration({}, [], None))

        language.resolver = MagicMock(return_value=path_set)

        with pytest.raises(ValueError) as info:
            context.resolve()

        assert info.value.args[0] == 'The same library, name:name, is required at two different versions, 1.2.3 vs. ' \
                                     '4.5.6.'

        language.resolver.assert_called_once_with(context, dep1)
示例#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': []}