commented code for unicity by name
This commit is contained in:
parent
dc99bbc44e
commit
d8370b008b
2 changed files with 35 additions and 4 deletions
|
@ -42,22 +42,32 @@ def make_description_duplicates():
|
||||||
wantframework_option = BoolOption('wantframework', 'Test requires',
|
wantframework_option = BoolOption('wantframework', 'Test requires',
|
||||||
default=False,
|
default=False,
|
||||||
requires=['boolop'])
|
requires=['boolop'])
|
||||||
# dummy2 (same name)
|
# dummy2 (same path)
|
||||||
gcdummy2 = BoolOption('dummy', 'dummy2', default=True)
|
gcdummy2 = BoolOption('dummy', 'dummy2', default=True)
|
||||||
|
# dummy3 (same name)
|
||||||
|
gcdummy3 = BoolOption('dummy', 'dummy2', default=True)
|
||||||
gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, gcdummy2, floatoption])
|
gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, gcdummy2, floatoption])
|
||||||
descr = OptionDescription('constraints', '', [gcgroup, booloption, objspaceoption,
|
descr = OptionDescription('constraints', '', [gcgroup, booloption, objspaceoption,
|
||||||
wantref_option, stroption,
|
wantref_option, stroption,
|
||||||
wantframework_option,
|
wantframework_option,
|
||||||
intoption, boolop])
|
intoption, boolop, gcdummy3])
|
||||||
return descr
|
return descr
|
||||||
|
|
||||||
def test_identical_names():
|
def test_identical_paths():
|
||||||
"""If in the schema (the option description) there is something that
|
"""If in the schema (the option description) there is something that
|
||||||
have the same name, an exection is raised
|
have the same name, an exection is raised
|
||||||
"""
|
"""
|
||||||
descr = make_description_duplicates()
|
descr = make_description_duplicates()
|
||||||
raises(ConflictConfigError, "cfg = Config(descr)")
|
raises(ConflictConfigError, "cfg = Config(descr)")
|
||||||
|
|
||||||
|
#def test_identical_for_names():
|
||||||
|
# """if there is something that
|
||||||
|
# have the same name, an exection is raised
|
||||||
|
# """
|
||||||
|
# descr = make_description_duplicates()
|
||||||
|
# raises(ConflictConfigError, "cfg = Config(descr)")
|
||||||
|
|
||||||
|
|
||||||
def make_description2():
|
def make_description2():
|
||||||
gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
|
gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
|
||||||
gcdummy = BoolOption('dummy', 'dummy', default=False)
|
gcdummy = BoolOption('dummy', 'dummy', default=False)
|
||||||
|
@ -202,4 +212,3 @@ def test_disabled_with_group():
|
||||||
raises(PropertiesOptionError, "cfg.gc.name")
|
raises(PropertiesOptionError, "cfg.gc.name")
|
||||||
assert gcgroup._is_disabled()
|
assert gcgroup._is_disabled()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,8 @@ class Config(object):
|
||||||
_cfgimpl_frozen = False
|
_cfgimpl_frozen = False
|
||||||
_cfgimpl_owner = default_owner
|
_cfgimpl_owner = default_owner
|
||||||
_cfgimpl_toplevel = None
|
_cfgimpl_toplevel = None
|
||||||
|
# TODO implement unicity by name
|
||||||
|
# _cfgimpl_unique_names = True
|
||||||
|
|
||||||
def __init__(self, descr, parent=None, **overrides):
|
def __init__(self, descr, parent=None, **overrides):
|
||||||
self._cfgimpl_descr = descr
|
self._cfgimpl_descr = descr
|
||||||
|
@ -61,6 +63,26 @@ class Config(object):
|
||||||
raise ConflictConfigError('duplicate option name: '
|
raise ConflictConfigError('duplicate option name: '
|
||||||
'{0}'.format(dup._name))
|
'{0}'.format(dup._name))
|
||||||
|
|
||||||
|
# TODO implement unicity by name
|
||||||
|
# def _validate_duplicates_for_names(self, children):
|
||||||
|
# "validates duplicates names agains the whole config"
|
||||||
|
# rootconfig = self._cfgimpl_get_toplevel()
|
||||||
|
# if self._cfgimpl_unique_names:
|
||||||
|
# for dup in children:
|
||||||
|
# try:
|
||||||
|
# print dup._name
|
||||||
|
# try:
|
||||||
|
# print rootconfig.get(dup._name)
|
||||||
|
# except AttributeError:
|
||||||
|
# pass
|
||||||
|
# raise NotFoundError
|
||||||
|
# #rootconfig.get(dup._name)
|
||||||
|
# except NotFoundError:
|
||||||
|
# pass # no identical names, it's fine
|
||||||
|
# else:
|
||||||
|
# raise ConflictConfigError('duplicate option name: '
|
||||||
|
# '{0}'.format(dup._name))
|
||||||
|
|
||||||
def _cfgimpl_build(self, overrides):
|
def _cfgimpl_build(self, overrides):
|
||||||
self._validate_duplicates(self._cfgimpl_descr._children)
|
self._validate_duplicates(self._cfgimpl_descr._children)
|
||||||
for child in self._cfgimpl_descr._children:
|
for child in self._cfgimpl_descr._children:
|
||||||
|
|
Loading…
Reference in a new issue