Exemple #1
0
from atomic_reactor.source import VcsInfo, SourceConfig
from atomic_reactor.util import ImageName, df_parser

from tests.constants import (MOCK_SOURCE, FLATPAK_GIT, FLATPAK_SHA1)
from tests.flatpak import MODULEMD_AVAILABLE, build_flatpak_test_configs, setup_flatpak_composes

DF_CONTENT = """FROM fedora:latest
LABEL release="@RELEASE@"
RUN $DNF module enable @ENABLE_MODULES@
RUN $DNF install @INSTALL_PACKAGES@
CMD sleep 1000
"""

ODCS_URL = 'https://odcs.fedoraproject.org/odcs/1'

CONFIGS = build_flatpak_test_configs()


class MockSource(object):
    def __init__(self, tmpdir):
        tmpdir = str(tmpdir)
        self.dockerfile_path = "./"
        self.path = tmpdir

        self.container_yaml_path = os.path.join(tmpdir, 'container.yaml')
        self.config = None

    def get_build_file_path(self):
        return self.container_yaml_path, self.path

    def get_vcs_info(self):
EXPECTED_SDK_FLATPAK_CONTENTS = [
    '/files/bin/gcc',
    '/metadata'
]

SDK_CONFIG = {
    'filesystem_contents': SDK_FILESYSTEM_CONTENTS,
    'expected_contents': EXPECTED_SDK_FLATPAK_CONTENTS,
    'expected_components': ['gcc'],
    'unexpected_components': [],
}

CONFIGS = build_flatpak_test_configs({
    'app': APP_CONFIG,
    'runtime': RUNTIME_CONFIG,
    'sdk': SDK_CONFIG,
})


class MockSource(object):
    dockerfile_path = None
    path = None


class X(object):
    image_id = "xxx"
    source = MockSource()
    base_image = ImageName(repo="qwe", tag="asd")

    ROOT + '/usr/bin/gcc': 'SOME_BINARY',
    '/var/tmp/flatpak-build.rpm_qf': SDK_MANIFEST_CONTENTS,
}

EXPECTED_SDK_FLATPAK_CONTENTS = ['/files/bin/gcc', '/metadata']

SDK_CONFIG = {
    'filesystem_contents': SDK_FILESYSTEM_CONTENTS,
    'expected_contents': EXPECTED_SDK_FLATPAK_CONTENTS,
    'expected_components': ['gcc'],
    'unexpected_components': [],
}

CONFIGS = build_flatpak_test_configs({
    'app': APP_CONFIG,
    'runtime': RUNTIME_CONFIG,
    'sdk': SDK_CONFIG,
})


class MockSource(object):
    dockerfile_path = None
    path = None


class X(object):
    image_id = "xxx"
    source = MockSource()
    base_image = ImageName(repo="qwe", tag="asd")

    workflow = DockerBuildWorkflow(MOCK_SOURCE, 'test-image')
    mock_source = MockSource(tmpdir)
    setattr(workflow, 'builder', MockBuilder())
    workflow.builder.source = mock_source
    flexmock(workflow, source=mock_source)

    with open(mock_source.container_yaml_path, "w") as f:
        f.write(container_yaml)
    workflow.builder.source.config = SourceConfig(str(tmpdir))

    setattr(workflow.builder, 'df_dir', str(tmpdir))

    return workflow


CONFIGS = build_flatpak_test_configs()


@responses.activate  # noqa - docker_tasker fixture
@pytest.mark.skipif(not MODULEMD_AVAILABLE,
                    reason='libmodulemd not available')
@pytest.mark.parametrize('config_name,breakage', [
    ('app', None),
    ('runtime', None),
    ('runtime', 'branch_mismatch'),
])
def test_flatpak_create_dockerfile(tmpdir, docker_tasker, config_name, breakage,
                                   reactor_config_map):
    config = CONFIGS[config_name]

    workflow = mock_workflow(tmpdir, config['container_yaml'])