Example #1
0
File: docker.py Project: eic/spack
def test_strip_is_set_from_config(minimal_configuration):
    writer = writers.create(minimal_configuration)
    assert writer.strip is True

    minimal_configuration['spack']['container']['strip'] = False
    writer = writers.create(minimal_configuration)
    assert writer.strip is False
Example #2
0
def test_packages(minimal_configuration):
    # In this minimal configuration we don't have packages
    writer = writers.create(minimal_configuration)
    assert writer.os_packages is None

    # If we add them a list should be returned
    pkgs = ['libgomp1']
    minimal_configuration['spack']['container']['os_packages'] = pkgs
    writer = writers.create(minimal_configuration)
    p = writer.os_packages
    assert p.update
    assert p.install
    assert p.clean
    assert p.list == pkgs
Example #3
0
File: docker.py Project: eic/spack
def test_extra_instructions_is_set_from_config(minimal_configuration):
    writer = writers.create(minimal_configuration)
    assert writer.extra_instructions == (None, None)

    test_line = 'RUN echo Hello world!'
    e = minimal_configuration['spack']['container']
    e['extra_instructions'] = {}
    e['extra_instructions']['build'] = test_line
    writer = writers.create(minimal_configuration)
    assert writer.extra_instructions == (test_line, None)

    e['extra_instructions']['final'] = test_line
    del e['extra_instructions']['build']
    writer = writers.create(minimal_configuration)
    assert writer.extra_instructions == (None, test_line)
Example #4
0
File: docker.py Project: eic/spack
def test_build_and_run_images(minimal_configuration):
    writer = writers.create(minimal_configuration)

    # Test the output of run property
    run = writer.run
    assert run.image == 'ubuntu:18.04'

    # Test the output of the build property
    build = writer.build
    assert build.image == 'spack/ubuntu-bionic:latest'
Example #5
0
def test_base_images_with_bootstrap(minimal_configuration, images_cfg,
                                    expected):
    """Check that base images are computed correctly when a
    bootstrap phase is present
    """
    minimal_configuration['spack']['container']['images'] = images_cfg
    writer = writers.create(minimal_configuration)

    for property_name, value in expected.items():
        assert getattr(writer, property_name) == value
Example #6
0
def test_singularity_specific_properties(properties, expected,
                                         singularity_configuration):
    # Set the property in the configuration
    container_config = singularity_configuration['spack']['container']
    for name, value in properties.items():
        container_config.setdefault('singularity', {})[name] = value

    # Assert the properties return the expected values
    writer = writers.create(singularity_configuration)
    for name, value in expected.items():
        assert getattr(writer, name) == value
Example #7
0
def test_custom_base_images(minimal_configuration):
    """Test setting custom base images from configuration file"""
    minimal_configuration['spack']['container']['images'] = {
        'build': 'custom-build:latest',
        'final': 'custom-final:latest'
    }
    writer = writers.create(minimal_configuration)

    assert writer.bootstrap.image is None
    assert writer.build.image == 'custom-build:latest'
    assert writer.run.image == 'custom-final:latest'
Example #8
0
def test_ensure_render_works(default_config, singularity_configuration):
    container_config = singularity_configuration['spack']['container']
    assert container_config['format'] == 'singularity'
    # Here we just want to ensure that nothing is raised
    writer = writers.create(singularity_configuration)
    writer()
Example #9
0
File: docker.py Project: eic/spack
def test_manifest(minimal_configuration):
    writer = writers.create(minimal_configuration)
    manifest_str = writer.manifest
    for line in manifest_str.split('\n'):
        assert 'echo' in line
Example #10
0
File: docker.py Project: eic/spack
def test_ensure_render_works(minimal_configuration, default_config):
    # Here we just want to ensure that nothing is raised
    writer = writers.create(minimal_configuration)
    writer()
Example #11
0
def test_error_message_invalid_os(minimal_configuration):
    minimal_configuration['spack']['container']['images']['os'] = 'invalid:1'
    with pytest.raises(ValueError, match='invalid operating system'):
        writers.create(minimal_configuration)