示例#1
0
 def test_recursive_section_ref(self):
     manager = central.ConfigManager([{
         'spork':
         basics.ConfigSectionFromStringDict({
             'class': 'pkgcore.test.config.test_central.drawer',
             'content': 'foon'
         }),
         'foon':
         basics.ConfigSectionFromStringDict({
             'class': 'pkgcore.test.config.test_central.drawer',
             'content': 'spork'
         }),
         'self':
         basics.ConfigSectionFromStringDict({
             'class': 'pkgcore.test.config.test_central.drawer',
             'content': 'self'
         }),
     }])
     self.check_error(
         "Collapsing section named 'self':\n"
         "Failed collapsing section key 'content':\n"
         "Reference to 'self' is recursive", self.get_config_obj, manager,
         'drawer', 'self')
     self.check_error(
         "Collapsing section named 'spork':\n"
         "Failed collapsing section key 'content':\n"
         "Collapsing section named 'foon':\n"
         "Failed collapsing section key 'content':\n"
         "Reference to 'spork' is recursive", self.get_config_obj, manager,
         'drawer', 'spork')
示例#2
0
 def test_recursive_inherit(self):
     manager = central.ConfigManager(
         [{'spork': basics.ConfigSectionFromStringDict({
                         'class': 'pkgcore.test.config.test_central.drawer',
                         'inherit': 'foon'}),
           'foon': basics.ConfigSectionFromStringDict({
                         'class': 'pkgcore.test.config.test_central.drawer',
                         'inherit': 'spork'}),
           }])
     self.check_error(
         "Collapsing section named 'spork':\n"
         "Inherit 'spork' is recursive",
         self.get_config_obj, manager, 'drawer', 'spork')
示例#3
0
    def test_self_inherit(self):
        section = basics.HardCodedConfigSection({'inherit': ['self']})
        manager = central.ConfigManager([{
            'self':
            basics.ConfigSectionFromStringDict({
                'class': 'pkgcore.test.config.test_central.drawer',
                'inherit': 'self'
            }),
        }], [RemoteSource()])
        self.check_error(
            "Collapsing section named 'self':\n"
            "Self-inherit 'self' cannot be found", self.get_config_obj,
            manager, 'drawer', 'self')
        self.check_error("Self-inherit 'self' cannot be found",
                         manager.collapse_section, [section])

        manager = central.ConfigManager([{
            'self':
            basics.HardCodedConfigSection({
                'inherit': ['self'],
            })
        }, {
            'self':
            basics.HardCodedConfigSection({
                'inherit': ['self'],
            })
        }, {
            'self':
            basics.HardCodedConfigSection({'class': drawer})
        }])
        self.assertTrue(manager.collapse_named_section('self'))
        self.assertTrue(manager.collapse_section([section]))
示例#4
0
 def test_collapse_named_errors(self):
     manager = central.ConfigManager(
         [{'spork': basics.ConfigSectionFromStringDict({
                         'class': 'pkgcore.test.config.test_central.drawer',
                         'content': 'ref'})}], [RemoteSource()])
     self.assertRaises(KeyError, self.get_config_obj, manager, 'repo', 'foon')
     self.check_error(
         "Collapsing section named 'spork':\n"
         "Failed collapsing section key 'content':\n"
         "no section called 'ref'",
         self.get_config_obj, manager, 'repo', 'spork')
示例#5
0
    def test_instantiation_caching(self):
        @configurable(typename='drawer')
        def myrepo():
            return object()

        manager = central.ConfigManager(
            [{'spork': basics.HardCodedConfigSection({'class': myrepo}),
              'drawer': basics.ConfigSectionFromStringDict({
                            'class': 'pkgcore.test.config.test_central.drawer',
                            'content': 'spork',
                            }),
              }])

        config = manager.collapse_named_section('spork')
        self.assertIdentical(config.instantiate(), config.instantiate())
        self.assertIdentical(
            config.instantiate(),
            manager.collapse_named_section('drawer').instantiate()[0])
示例#6
0
def store_config(namespace, attr, global_config=()):
    configs = list(
        map(_convert_config_mods, [
            namespace.pop('new_config', None),
            namespace.pop('add_config', None)
        ]))
    # add necessary inherits for add_config
    for key, vals in configs[1].items():
        vals.setdefault('inherit', key)

    configs = [{
        section: basics.ConfigSectionFromStringDict(vals)
        for section, vals in d.items()
    } for d in configs if d]

    config = load_config(
        skip_config_files=namespace.pop('empty_config', False),
        prepend_sources=tuple(global_config),
        append_sources=tuple(configs),
        location=namespace.pop('override_config', None),
        profile_override=namespace.pop('profile_override', None),
        **vars(namespace))
    setattr(namespace, attr, config)
示例#7
0
 def add_trigger(name, kls_path, **extra_args):
     d = extra_args.copy()
     d['class'] = kls_path
     new_config[name] = basics.ConfigSectionFromStringDict(d)
     triggers.append(name)
示例#8
0
                    "disabling buildpkg related features since PKGDIR either doesn't "
                    "exist, or lacks 0755 minimal permissions")
                pkgdir = None
    else:
        if buildpkg or set(features).intersection(
            ('pristine-buildpkg', 'buildsyspkg', 'unmerge-backup')):
            logger.warning(
                "disabling buildpkg related features since PKGDIR is unset")

    # yes, round two; may be disabled from above and massive else block sucks
    if pkgdir is not None:
        if pkgdir and os.path.isdir(pkgdir):
            new_config['binpkg'] = basics.ConfigSectionFromStringDict({
                'class':
                'pkgcore.binpkg.repository.tree',
                'location':
                pkgdir,
                'ignore_paludis_versioning':
                str('ignore-paludis-versioning' in features),
            })
            default_repos.append('binpkg')

        if buildpkg:
            add_trigger('buildpkg_trigger',
                        'pkgcore.merge.triggers.SavePkg',
                        pristine='no',
                        target_repo='binpkg')
        elif 'pristine-buildpkg' in features:
            add_trigger('buildpkg_trigger',
                        'pkgcore.merge.triggers.SavePkg',
                        pristine='yes',
                        target_repo='binpkg')
示例#9
0
文件: cparser.py 项目: chutz/pkgcore
 def get_section(section):
     return basics.ConfigSectionFromStringDict(dict(cparser.items(section)))
示例#10
0
from pkgcore.config import basics

pkgcore_plugins = {
    'global_config': [{
        'basic':
        basics.ConfigSectionFromStringDict({
            'class':
            'pkgcore.ebuild.formatter.BasicFormatter',
        }),
        'pkgcore':
        basics.ConfigSectionFromStringDict({
            'class':
            'pkgcore.ebuild.formatter.PkgcoreFormatter',
        }),
        'portage':
        basics.ConfigSectionFromStringDict({
            'class': 'pkgcore.ebuild.formatter.PortageFormatter',
            'default': 'True',
        }),
        'portage-verbose':
        basics.ConfigSectionFromStringDict({
            'class':
            'pkgcore.ebuild.formatter.PortageVerboseFormatter',
        }),
        'paludis':
        basics.ConfigSectionFromStringDict({
            'class':
            'pkgcore.ebuild.formatter.PaludisFormatter',
        }),
    }],
}
示例#11
0
"""Extra default config sections from pkgcheck."""

from pkgcore.config import basics

from .. import base

pkgcore_plugins = {
    'global_config': [{
        'repo': basics.ConfigSectionFromStringDict({
            'class': 'pkgcheck.base.Scope',
            'scopes': str(base.repository_scope),
            }),
        'no-arch': basics.ConfigSectionFromStringDict({
            'class': 'pkgcheck.base.Blacklist',
            'patterns': 'unstable_only stale_unstable imlate',
            }),
        'all': basics.ConfigSectionFromStringDict({
            'class': 'pkgcheck.base.Blacklist',
            'patterns': '',
            }),
        }],
    }
示例#12
0
# Copyright: 2006 Marien Zwart <*****@*****.**>
# License: BSD/GPL2

from pkgcore.config import basics

pkgcore_plugins = {
    'global_config': [{
        'basic':
        basics.ConfigSectionFromStringDict({
            'class':
            'pkgcore.ebuild.formatter.basic_factory',
        }),
        'pkgcore':
        basics.ConfigSectionFromStringDict({
            'class':
            'pkgcore.ebuild.formatter.pkgcore_factory',
        }),
        'portage':
        basics.ConfigSectionFromStringDict({
            'class': 'pkgcore.ebuild.formatter.portage_factory',
            'default': 'True',
        }),
        'portage-verbose':
        basics.ConfigSectionFromStringDict({
            'class':
            'pkgcore.ebuild.formatter.portage_verbose_factory',
        }),
        'paludis':
        basics.ConfigSectionFromStringDict({
            'class':
            'pkgcore.ebuild.formatter.paludis_factory',