optimisations and all is properties
[tiramisu.git] / test / test_config.py
index beb75ad..6c13c32 100644 (file)
@@ -6,14 +6,14 @@ from tiramisu.config import *
 from tiramisu.option import *
 
 def make_description():
-    gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
+    gcoption = ChoiceOption('name', 'GC name', ('ref', 'framework'), 'ref')
     gcdummy = BoolOption('dummy', 'dummy', default=False)
     objspaceoption = ChoiceOption('objspace', 'Object space',
-                                ['std', 'thunk'], 'std')
+                                ('std', 'thunk'), 'std')
     booloption = BoolOption('bool', 'Test boolean option', default=True)
     intoption = IntOption('int', 'Test int option', default=0)
     floatoption = FloatOption('float', 'Test float option', default=2.3)
-    stroption = StrOption('str', 'Test string option', default="abc")
+    stroption = StrOption('str', 'Test string option', default="abc", properties=('mandatory', ))
     boolop = BoolOption('boolop', 'Test boolean option op', default=True)
     wantref_option = BoolOption('wantref', 'Test requires', default=False)
     wantframework_option = BoolOption('wantframework', 'Test requires',
@@ -52,8 +52,8 @@ def test_base_config_and_groups():
     assert nm._name == 'name'
     gc = config.unwrap_from_path('gc')
     assert gc._name == 'gc'
-    nm = config.unwrap_from_name('name')
-    assert nm._name == 'name'
+    #nm = config.unwrap_from_name('name')
+    #assert nm._name == 'name'
 
 def test_base_config_in_a_tree():
     "how options are organized into a tree"
@@ -105,3 +105,16 @@ def test_cfgimpl_get_home_by_path():
     assert config.cfgimpl_get_home_by_path('dummy')[1] == 'dummy'
     assert config.getpaths(include_groups=False) == ['gc.name', 'gc.dummy', 'gc.float', 'bool', 'objspace', 'wantref', 'str', 'wantframework', 'int', 'boolop']
     assert config.getpaths(include_groups=True) == ['gc', 'gc.name', 'gc.dummy', 'gc.float', 'bool', 'objspace', 'wantref', 'str', 'wantframework', 'int', 'boolop']
+
+def test_mandatory_warnings():
+    descr = make_description()
+    config = Config(descr)
+    assert(MandatoryError, "config.str = ''")
+    setting = config.cfgimpl_get_settings()
+    setting.read_write()
+    assert list(mandatory_warnings(config)) == []
+    setting.disable_property('mandatory')
+    config.str = ''
+    assert list(mandatory_warnings(config)) == ['str']
+    setting.enable_property('mandatory')
+    assert list(mandatory_warnings(config)) == ['str']