diff --git a/test/api/test_owner.py b/test/api/test_owner.py index 4b6cb48..679e864 100644 --- a/test/api/test_owner.py +++ b/test/api/test_owner.py @@ -801,7 +801,7 @@ def make_api(options, multi): if 'options' in collected: options.extend(collected['options']) for key, values in collected.items(): - if key == 'options': + if key in ['options', 'properties']: continue option = make_optiondescriptions(key, values) if option is None: @@ -817,9 +817,9 @@ def make_api(options, multi): continue local_collect_options = collect_options for optiondescription in path.split('.')[:-1]: - local_collect_options.setdefault(optiondescription, {}) + local_collect_options.setdefault(optiondescription, {'properties': {}}) local_collect_options = local_collect_options[optiondescription] - local_collect_options['properties'] = option.get(optiondescription, {}) + local_collect_options['properties'].update(option.get(optiondescription, {})) option_name = path.split('.')[-1] path = '.'.join(path.split('.')[:-1]) local_collect_options.setdefault('options', []).append(make_option(option_name, option.get(option_name))) @@ -853,7 +853,7 @@ DICT_PATHS = [ ('odmaster.second', {'second': {'disabled': True}}), ('odmaster.third', {'third': {'hidden': True}})]), ##test a config with dynoption - OrderedDict([('subod.firstv', {'subod': {'dyn': True}}), + OrderedDict([('subod.first', {'subod': {'dyn': True}}), ('subod.second', {'second': {'disabled': True}}), ('subod.third', {'third': {'hidden': True}}), ('subodval1.firstval1', None), @@ -863,7 +863,7 @@ DICT_PATHS = [ ('subodval2.secondval2', None), ('subodval2.thirdval2', None)]), #test a config with dynoption subdir - OrderedDict([('subod.subsubod.first', {'subod': {'dyn': True}}), + OrderedDict([('subod.subsubod.first', {'subsubod': {'dyn': True}}), ('subod.subsubod.second', {'second': {'disabled': True}}), ('subod.subsubod.third', {'third': {'hidden': True}}), ('subod.subsubodval1.firstval1', None), @@ -888,23 +888,24 @@ def test_options(paths): api = make_api(paths, multi) if api is None: continue - check_all(api, lpaths[0], multi) - check_all(api, lpaths[1], multi, propertyerror=True, extra_properties=['disabled']) - check_all(api, lpaths[2], multi, permissive=True, extra_properties=['hidden']) - if len(lpaths) == 6: + if len(lpaths) == 9: check_all(api, lpaths[3], multi) check_all(api, lpaths[4], multi, propertyerror=True, extra_properties=['disabled']) check_all(api, lpaths[5], multi, permissive=True, extra_properties=['hidden']) - ## - #print('') - #print(api.help) + check_all(api, lpaths[6], multi) + check_all(api, lpaths[7], multi, propertyerror=True, extra_properties=['disabled']) + check_all(api, lpaths[8], multi, permissive=True, extra_properties=['hidden']) + else: + check_all(api, lpaths[0], multi) + check_all(api, lpaths[1], multi, propertyerror=True, extra_properties=['disabled']) + check_all(api, lpaths[2], multi, permissive=True, extra_properties=['hidden']) DICT_PATHS2 = [ OrderedDict([('subod.subsubod.first', {'subsubod': {'hidden': True}}), ('subod.subsubod.second', {}), ('subod.subsubod.third', {})]), - OrderedDict([('subod.subsubod.first', {'subsub': {'dyn': True, 'hidden': True}}), + OrderedDict([('subod.subsubod.first', {'subsubod': {'dyn': True, 'hidden': True}}), ('subod.subsubod.second', {}), ('subod.subsubod.third', {}), ('subod.subsubodval1.firstval1', None), @@ -923,19 +924,22 @@ def paths2(request): return request.param -#FIXME -#def test_tree_od_permissive(paths2): -# """permissive when optiondescription is hidden -# """ -# lpaths = list(paths2.keys()) -# for multi in (False, True): -# api = make_api(paths2, multi) -# if api is None: -# continue -# check_all(api, lpaths[0], multi, permissive=True) -# check_all(api, lpaths[1], multi, permissive=True) -# check_all(api, lpaths[2], multi, permissive=True, extra_properties=['hidden']) -# if len(lpaths) == 6: -# check_all(api, lpaths[3], multi, permissive=True) -# check_all(api, lpaths[4], multi, permissive=True) -# check_all(api, lpaths[5], multi, permissive=True, extra_properties=['hidden']) +def test_tree_od_permissive(paths2): + """permissive when optiondescription is hidden + """ + lpaths = list(paths2.keys()) + for multi in (False, True): + api = make_api(paths2, multi) + if api is None: + continue + if len(lpaths) == 9: + check_all(api, lpaths[3], multi, permissive=True) + check_all(api, lpaths[4], multi, permissive=True) + check_all(api, lpaths[5], multi, permissive=True) + check_all(api, lpaths[6], multi, permissive=True) + check_all(api, lpaths[7], multi, permissive=True) + check_all(api, lpaths[8], multi, permissive=True) + else: + check_all(api, lpaths[0], multi, permissive=True) + check_all(api, lpaths[1], multi, permissive=True) + check_all(api, lpaths[2], multi, permissive=True) diff --git a/test/test_parsing_group.py b/test/test_parsing_group.py index 1ae909a..6ba0826 100644 --- a/test/test_parsing_group.py +++ b/test/test_parsing_group.py @@ -285,12 +285,6 @@ def test_values_with_master_remove(): assert cfg.ip_admin_eth0.netmask_admin_eth0 == ['255.255.255.128'] -def test_master_not_valid_name(): - ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé", multi=True) - netmask_admin_eth0 = StrOption('netmask_admin_eth0', "masque du sous-réseau", multi=True) - raises(ValueError, "MasterSlaves('interface1', '', [ip_admin_eth0, netmask_admin_eth0])") - - def test_sub_group_in_master_group(): ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé", multi=True) netmask_admin_eth0 = StrOption('netmask_admin_eth0', "masque du sous-réseau", multi=True) diff --git a/tiramisu/api.py b/tiramisu/api.py index 008c115..1781eb9 100644 --- a/tiramisu/api.py +++ b/tiramisu/api.py @@ -385,7 +385,7 @@ class TiramisuAPI(object): def option(self, path, index=None): validate = not self.force_unrestraint settings = self.config.cfgimpl_get_settings() - setting_properties = settings.getcontextproperties() + setting_properties = settings.get_global_properties() opt = self.config.unwrap_from_path(path, setting_properties=setting_properties, validate=validate, diff --git a/tiramisu/setting.py b/tiramisu/setting.py index 2887ae2..e68d866 100644 --- a/tiramisu/setting.py +++ b/tiramisu/setting.py @@ -369,7 +369,7 @@ class Settings(object): return Property(self, properties, opt, path) return properties - def getcontextproperties(self): + def get_global_properties(self): return self._getproperties() def __setitem__(self, opt, value): # pragma: optional cover