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'])