def test_bump_release_find_current_release(tmpdir, labelval, expected_attr,
                                           expected_key):
    dflines = [
        'FROM fedora\n', 'ENV ENV=1\n', 'LABEL Label={0}\n'.format(labelval)
    ]
    df_path = os.path.join(str(tmpdir), 'Dockerfile')
    DockerfileParser(df_path).lines = dflines
    plugin = BumpReleasePlugin(None, None, None, None, None)
    parser = DockerfileParser(df_path)
    attrs, key = plugin.find_current_release(parser, 'Label')
    assert attrs == getattr(parser, expected_attr)
    assert key == expected_key
Ejemplo n.º 2
0
def test_bump_release_find_current_release(tmpdir,
                                           labelval,
                                           expected_attr,
                                           expected_key):
    dflines = ['FROM fedora\n',
               'ENV ENV=1\n',
               'LABEL Label={0}\n'.format(labelval)]
    df_path = os.path.join(str(tmpdir), 'Dockerfile')
    DockerfileParser(df_path).lines = dflines
    plugin = BumpReleasePlugin(None, None, None, None, None)
    parser = DockerfileParser(df_path)
    attrs, key = plugin.find_current_release(parser, 'Label')
    assert attrs == getattr(parser, expected_attr)
    assert key == expected_key
Ejemplo n.º 3
0
    def prepare(self,
                tmpdir,
                labels=None,
                include_target=True,
                certs=False,
                append=False):
        if labels is None:
            labels = {}

        workflow = flexmock()
        setattr(workflow, 'builder', flexmock())

        df = tmpdir.join('Dockerfile')
        df.write('FROM base\n')
        for key, value in labels.items():
            df.write('LABEL {key}={value}\n'.format(key=key, value=value),
                     mode='a')
        setattr(workflow.builder, 'df_path', str(df))

        kwargs = {'tasker': None, 'workflow': workflow, 'hub': ''}
        if include_target:
            kwargs['target'] = 'foo'
        if append:
            kwargs['append'] = True
        if certs:
            tmpdir.join('cert').write('cert')
            tmpdir.join('serverca').write('serverca')
            kwargs['koji_ssl_certs_dir'] = str(tmpdir)
        plugin = BumpReleasePlugin(**kwargs)
        return plugin
Ejemplo n.º 4
0
    def prepare(self, tmpdir, labels=None, include_target=True, certs=False):
        if labels is None:
            labels = {}

        workflow = flexmock()
        setattr(workflow, 'builder', flexmock())
        filename = os.path.join(str(tmpdir), 'Dockerfile')
        with open(filename, 'wt') as df:
            df.write('FROM base\n')
            for key, value in labels.items():
                df.write('LABEL {key}={value}\n'.format(key=key, value=value))

        setattr(workflow.builder, 'df_path', filename)
        kwargs = {'tasker': None, 'workflow': workflow, 'hub': ''}
        if include_target:
            kwargs['target'] = 'foo'
        if certs:
            with open('{}/ca'.format(tmpdir), 'w') as ca_fd:
                ca_fd.write('ca')
            with open('{}/cert'.format(tmpdir), 'w') as cert_fd:
                cert_fd.write('cert')
            with open('{}/serverca'.format(tmpdir), 'w') as serverca_fd:
                serverca_fd.write('serverca')
            kwargs['koji_ssl_certs_dir'] = str(tmpdir)
        plugin = BumpReleasePlugin(**kwargs)
        return plugin
Ejemplo n.º 5
0
    def prepare(self,
                tmpdir,
                labels=None,
                include_target=True,
                certs=False,
                append=False,
                reactor_config_map=False,
                reserve_build=False,
                is_auto=False,
                add_timestamp=None,
                fetch_source=False):
        if labels is None:
            labels = {}

        workflow = flexmock()
        setattr(workflow, 'builder', flexmock())
        setattr(workflow, 'plugin_workspace', {})
        setattr(workflow, 'reserved_build_id', None)
        setattr(workflow, 'reserved_token ', None)
        setattr(workflow, 'source', MockSource(tmpdir, add_timestamp))
        setattr(workflow, 'prebuild_results',
                {CheckAndSetRebuildPlugin.key: is_auto})
        if fetch_source:
            workflow.prebuild_results[PLUGIN_FETCH_SOURCES_KEY] = {
                'sources_for_nvr': KOJI_SOURCE_NVR
            }

        df = tmpdir.join('Dockerfile')
        df.write('FROM base\n')
        for key, value in labels.items():
            df.write('LABEL {key}={value}\n'.format(key=key, value=value),
                     mode='a')
        setattr(workflow.builder, 'df_path', str(df))

        kwargs = {'tasker': None, 'workflow': workflow, 'hub': ''}
        koji_map = {
            'hub_url': '',
            'root_url': '',
            'auth': {},
            'reserve_build': reserve_build
        }
        if include_target:
            kwargs['target'] = 'foo'
        if append:
            kwargs['append'] = True
        if certs:
            tmpdir.join('cert').write('cert')
            tmpdir.join('serverca').write('serverca')
            kwargs['koji_ssl_certs_dir'] = str(tmpdir)
            koji_map['auth']['ssl_certs_dir'] = str(tmpdir)

        if reactor_config_map:
            workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
            workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
                ReactorConfig({'version': 1, 'koji': koji_map})

        plugin = BumpReleasePlugin(**kwargs)
        return plugin
Ejemplo n.º 6
0
    def prepare(self,
                workflow,
                source_dir: Path,
                labels=None,
                certs=False,
                append=False,
                reserve_build=False,
                add_timestamp=None,
                fetch_source=False,
                scratch=None):
        if labels is None:
            labels = {}

        workflow.source = MockSource(str(source_dir), add_timestamp)
        if scratch is not None:
            workflow.user_params['scratch'] = scratch
        if fetch_source:
            workflow.data.prebuild_results[PLUGIN_FETCH_SOURCES_KEY] = {
                'sources_for_nvr': KOJI_SOURCE_NVR
            }

        df = source_dir / 'Dockerfile'
        lines: List[str] = ["FROM base"]
        lines.extend(f"LABEL {key}={value}" for key, value in labels.items())
        df.write_text('\n'.join(lines), "utf-8")

        kwargs = {
            'workflow': workflow,
        }

        if append:
            kwargs['append'] = True
        if certs:
            source_dir.joinpath('cert').write_text('cert', 'utf-8')
            source_dir.joinpath('serverca').write_text('serverca', 'utf-8')

        add_koji_map_in_workflow(
            workflow,
            hub_url='',
            root_url='',
            reserve_build=reserve_build,
            ssl_certs_dir=str(source_dir) if certs else None)

        workflow.build_dir.init_build_dirs(["aarch", "x86_64"],
                                           workflow.source)

        plugin = BumpReleasePlugin(**kwargs)
        return plugin
    def prepare(self, tmpdir, labels=None, include_target=True):
        if labels is None:
            labels = {}

        workflow = flexmock()
        setattr(workflow, 'builder', flexmock())
        filename = os.path.join(str(tmpdir), 'Dockerfile')
        with open(filename, 'wt') as df:
            df.write('FROM base\n')
            for key, value in labels.items():
                df.write('LABEL {key}={value}\n'.format(key=key, value=value))

        setattr(workflow.builder, 'df_path', filename)
        args = [None, workflow, 'hub']
        if include_target:
            args.append('target')
        plugin = BumpReleasePlugin(*args)
        return plugin
Ejemplo n.º 8
0
    def prepare(self,
                tmpdir,
                labels=None,
                include_target=True,
                certs=False,
                append=False,
                reactor_config_map=False):
        if labels is None:
            labels = {}

        workflow = flexmock()
        setattr(workflow, 'builder', flexmock())
        setattr(workflow, 'plugin_workspace', {})

        df = tmpdir.join('Dockerfile')
        df.write('FROM base\n')
        for key, value in labels.items():
            df.write('LABEL {key}={value}\n'.format(key=key, value=value),
                     mode='a')
        setattr(workflow.builder, 'df_path', str(df))

        kwargs = {'tasker': None, 'workflow': workflow, 'hub': ''}
        koji_map = {'hub_url': '', 'root_url': '', 'auth': {}}
        if include_target:
            kwargs['target'] = 'foo'
        if append:
            kwargs['append'] = True
        if certs:
            tmpdir.join('cert').write('cert')
            tmpdir.join('serverca').write('serverca')
            kwargs['koji_ssl_certs_dir'] = str(tmpdir)
            koji_map['auth']['ssl_certs_dir'] = str(tmpdir)

        if reactor_config_map:
            workflow.plugin_workspace[ReactorConfigPlugin.key] = {}
            workflow.plugin_workspace[ReactorConfigPlugin.key][WORKSPACE_CONF_KEY] =\
                ReactorConfig({'version': 1, 'koji': koji_map})

        plugin = BumpReleasePlugin(**kwargs)
        return plugin