예제 #1
0
def test_find_external_merge(mutable_config, mutable_mock_repo):
    """Check that 'spack find external' doesn't overwrite an existing spec
    entry in packages.yaml.
    """
    pkgs_cfg_init = {
        'find-externals1': {
            'externals': [{
                'spec': '[email protected]',
                'prefix': '/preexisting-prefix/'
            }],
            'buildable': False
        }
    }

    mutable_config.update_config('packages', pkgs_cfg_init)
    entries = [
        ExternalPackageEntry(
            Spec.from_detection('[email protected]'), '/x/y1/'
        ),
        ExternalPackageEntry(
            Spec.from_detection('[email protected]'), '/x/y2/'
        )
    ]
    pkg_to_entries = {'find-externals1': entries}
    spack.cmd.external._update_pkg_config(pkg_to_entries, False)

    pkgs_cfg = spack.config.get('packages')
    pkg_cfg = pkgs_cfg['find-externals1']
    pkg_externals = pkg_cfg['externals']

    assert {'spec': '[email protected]',
            'prefix': '/preexisting-prefix/'} in pkg_externals
    assert {'spec': '[email protected]',
            'prefix': '/x/y2/'} in pkg_externals
예제 #2
0
def test_find_external_merge(mutable_config, mutable_mock_repo):
    """Check that 'spack find external' doesn't overwrite an existing spec
    entry in packages.yaml.
    """
    pkgs_cfg_init = {
        'find-externals1': {
            'paths': {
                '[email protected]': '/preexisting-prefix/'
            },
            'buildable': False
        }
    }

    mutable_config.update_config('packages', pkgs_cfg_init)

    pkg_to_entries = {
        'find-externals1': [
            ExternalPackageEntry(Spec('[email protected]'), '/x/y1/'),
            ExternalPackageEntry(Spec('[email protected]'), '/x/y2/'),
        ]
    }
    spack.cmd.external._update_pkg_config(pkg_to_entries, False)

    pkgs_cfg = spack.config.get('packages')
    pkg_cfg = pkgs_cfg['find-externals1']
    pkg_paths_cfg = pkg_cfg['paths']

    assert pkg_paths_cfg['[email protected]'] == '/preexisting-prefix/'
    assert pkg_paths_cfg['[email protected]'] == '/x/y2/'
예제 #3
0
def test_find_external_update_config(mutable_config):
    entries = [
        ExternalPackageEntry(Spec.from_detection('*****@*****.**'), '/x/y1/'),
        ExternalPackageEntry(Spec.from_detection('[email protected]'), '/x/y2/'),
    ]
    pkg_to_entries = {'cmake': entries}

    spack.cmd.external._update_pkg_config(pkg_to_entries, False)

    pkgs_cfg = spack.config.get('packages')
    cmake_cfg = pkgs_cfg['cmake']
    cmake_externals = cmake_cfg['externals']

    assert {'spec': '*****@*****.**', 'prefix': '/x/y1/'} in cmake_externals
    assert {'spec': '[email protected]', 'prefix': '/x/y2/'} in cmake_externals
예제 #4
0
def test_find_external_update_config(mutable_config):
    pkg_to_entries = {
        'cmake': [
            ExternalPackageEntry(Spec('*****@*****.**'), '/x/y1/'),
            ExternalPackageEntry(Spec('[email protected]'), '/x/y2/'),
        ]
    }

    spack.cmd.external._update_pkg_config(pkg_to_entries, False)

    pkgs_cfg = spack.config.get('packages')
    cmake_cfg = pkgs_cfg['cmake']
    cmake_paths_cfg = cmake_cfg['paths']

    assert cmake_paths_cfg['*****@*****.**'] == '/x/y1/'
    assert cmake_paths_cfg['[email protected]'] == '/x/y2/'