commented code for unicity by name
authorgwen <gremond@cadoles.com>
Thu, 16 Aug 2012 09:42:24 +0000 (11:42 +0200)
committergwen <gremond@cadoles.com>
Thu, 16 Aug 2012 09:42:24 +0000 (11:42 +0200)
test/test_option_consistency.py
tiramisu/config.py

index c427f85..96eb2c7 100644 (file)
@@ -42,22 +42,32 @@ def make_description_duplicates():
     wantframework_option = BoolOption('wantframework', 'Test requires',
                                       default=False,
                                       requires=['boolop'])
-    # dummy2 (same name)
+    # dummy2 (same path)
     gcdummy2  = BoolOption('dummy', 'dummy2', default=True)
+    # dummy3 (same name)
+    gcdummy3  = BoolOption('dummy', 'dummy2', default=True)
     gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, gcdummy2, floatoption])
     descr = OptionDescription('constraints', '', [gcgroup, booloption, objspaceoption,
                                            wantref_option, stroption,
                                            wantframework_option,
-                                           intoption, boolop])
+                                           intoption, boolop, gcdummy3])
     return descr
 
-def test_identical_names():
+def test_identical_paths():
     """If in the schema (the option description) there is something that 
     have the same name, an exection is raised
     """    
     descr = make_description_duplicates()
     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():
     gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
     gcdummy = BoolOption('dummy', 'dummy', default=False)
@@ -202,4 +212,3 @@ def test_disabled_with_group():
     raises(PropertiesOptionError, "cfg.gc.name")
     assert gcgroup._is_disabled()
 
-    
index dd7c2a2..58ff788 100644 (file)
@@ -37,6 +37,8 @@ class Config(object):
     _cfgimpl_frozen = False
     _cfgimpl_owner = default_owner
     _cfgimpl_toplevel = None
+# TODO implement unicity by name
+#    _cfgimpl_unique_names = True
     
     def __init__(self, descr, parent=None, **overrides):
         self._cfgimpl_descr = descr
@@ -61,6 +63,26 @@ class Config(object):
                 raise ConflictConfigError('duplicate option 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):
         self._validate_duplicates(self._cfgimpl_descr._children)
         for child in self._cfgimpl_descr._children: