예제 #1
0
def registry():
    reg = ComponentRegistry()
    reg.clear()
    reg.clear_components()
    reg.add_component(os.getcwd())

    yield reg
예제 #2
0
def chain_composite(request):
    """Create a multirule chain that has the registry followed by the mock resolver
    """

    reg = ComponentRegistry()
    reg.add_component(comp_path('comp3_v1.0'))

    chain = DependencyResolverChain()
    chain.rules.append([10, (re.compile('.*'), MockDependencyResolver, [comp_path('comp1_v1.1')])])
    yield chain

    reg.remove_component('comp3')
예제 #3
0
def test_registry_resolver_built_invalid(tmpdir):
    """Make sure we throw an error if we are asked to install an invalid built component
    """

    reg = ComponentRegistry()
    chain = DependencyResolverChain()

    tile = copy_comp('comp2_dev_v1.1', tmpdir.strpath)

    try:
        reg.add_component(comp_path('comp1_v1.1_built_empty'))
        with pytest.raises(ExternalError) as excinfo:
            for dep in tile.dependencies:
                result = chain.update_dependency(tile, dep)

        assert excinfo.value.msg == 'Component found in registry but its build/output folder is not valid'
    finally:
        reg.remove_component('comp1')
예제 #4
0
def test_registry_resolver(tmpdir):
    """Test to make sure that the registry resolver can install and update a dependency
    """

    reg = ComponentRegistry()
    chain = DependencyResolverChain()

    tile = copy_comp('comp2_dev_v1.1', tmpdir.strpath)

    try:
        reg.add_component(comp_path('comp1_v1.1'))
        for dep in tile.dependencies:
            result = chain.update_dependency(tile, dep)
            assert result == 'installed'

        for dep in tile.dependencies:
            result = chain.update_dependency(tile, dep)
            assert result == 'already installed'

        reg.remove_component('comp1')
        reg.add_component(comp_path('comp1_v1.2'))

        for dep in tile.dependencies:
            result = chain.update_dependency(tile, dep)
            assert result == 'updated'

        reg.remove_component('comp1')
        reg.add_component(comp_path('comp1_v2.0'))

        for dep in tile.dependencies:
            result = chain.update_dependency(tile, dep)
            assert result == 'already installed'
    finally:
        reg.remove_component('comp1')