diff --git a/test/test_dyn_optiondescription.py b/test/test_dyn_optiondescription.py index 8f1965b..5eb95bc 100644 --- a/test/test_dyn_optiondescription.py +++ b/test/test_dyn_optiondescription.py @@ -284,7 +284,7 @@ def test_mandatory_dyndescription(): api.option('od.dodval1.stval1').value.reset() api.property.read_only() raises(PropertiesOptionError, "api.option('od.dodval1.stval1').value.get()") - assert list(api.value.mandatory_warnings()) == ['od.dodval1.stval1', 'od.dodval2.stval2'] + assert list(api.value.mandatory()) == ['od.dodval1.stval1', 'od.dodval2.stval2'] def test_build_dyndescription_context(): @@ -446,7 +446,7 @@ def test_mandatory_dyndescription_context(): api.option('od.dodval1.stval1').value.reset() api.property.read_only() raises(PropertiesOptionError, "api.option('od.dodval1.stval1').value.get()") - assert list(api.value.mandatory_warnings()) == ['od.dodval1.stval1', 'od.dodval2.stval2'] + assert list(api.value.mandatory()) == ['od.dodval1.stval1', 'od.dodval2.stval2'] def test_increase_dyndescription_context(): diff --git a/test/test_mandatory.py b/test/test_mandatory.py index 50cf498..63ed81f 100644 --- a/test/test_mandatory.py +++ b/test/test_mandatory.py @@ -329,11 +329,11 @@ def test_mandatory_warnings_ro(): except PropertiesOptionError as err: prop = err.proptype assert 'mandatory' in prop - assert list(api.value.mandatory_warnings()) == ['str', 'str1', 'unicode2', 'str3'] + assert list(api.value.mandatory()) == ['str', 'str1', 'unicode2', 'str3'] api.property.read_write() api.option('str').value.set('a') api.property.read_only() - assert list(api.value.mandatory_warnings()) == ['str1', 'unicode2', 'str3'] + assert list(api.value.mandatory()) == ['str1', 'unicode2', 'str3'] def test_mandatory_warnings_rw(): @@ -342,9 +342,9 @@ def test_mandatory_warnings_rw(): api.option('str').value.set('') api.property.read_write() api.option('str').value.get() - assert list(api.value.mandatory_warnings()) == ['str', 'str1', 'unicode2', 'str3'] + assert list(api.value.mandatory()) == ['str', 'str1', 'unicode2', 'str3'] api.option('str').value.set('a') - assert list(api.value.mandatory_warnings()) == ['str1', 'unicode2', 'str3'] + assert list(api.value.mandatory()) == ['str1', 'unicode2', 'str3'] def test_mandatory_warnings_disabled(): @@ -353,9 +353,9 @@ def test_mandatory_warnings_disabled(): api.option('str').value.set('') api.property.read_write() api.option('str').value.get() - assert set(api.value.mandatory_warnings()) == {'str', 'str1', 'unicode2', 'str3'} + assert set(api.value.mandatory()) == {'str', 'str1', 'unicode2', 'str3'} api.option('str').property.add('disabled') - assert set(api.value.mandatory_warnings()) == {'str1', 'unicode2', 'str3'} + assert set(api.value.mandatory()) == {'str1', 'unicode2', 'str3'} def test_mandatory_warnings_hidden(): @@ -365,9 +365,9 @@ def test_mandatory_warnings_hidden(): api.property.read_write() api.permissive.set(frozenset(['hidden'])) api.option('str').value.get() - assert set(api.value.mandatory_warnings()) == {'str', 'str1', 'unicode2', 'str3'} + assert set(api.value.mandatory()) == {'str', 'str1', 'unicode2', 'str3'} api.option('str').property.add('hidden') - assert set(api.value.mandatory_warnings()) == {'str', 'str1', 'unicode2', 'str3'} + assert set(api.value.mandatory()) == {'str', 'str1', 'unicode2', 'str3'} def test_mandatory_warnings_frozen(): @@ -376,10 +376,10 @@ def test_mandatory_warnings_frozen(): api.option('str').value.set('') api.property.read_write() api.option('str').value.get() - assert set(api.value.mandatory_warnings()) == {'str', 'str1', 'unicode2', 'str3'} + assert set(api.value.mandatory()) == {'str', 'str1', 'unicode2', 'str3'} api.option('str').property.add('frozen') api.property.read_only() - assert set(api.value.mandatory_warnings()) == {'str', 'str1', 'unicode2', 'str3'} + assert set(api.value.mandatory()) == {'str', 'str1', 'unicode2', 'str3'} def test_mandatory_master(): @@ -404,7 +404,7 @@ def test_mandatory_warnings_master(): #interface1.impl_set_group_type(groups.master) descr = OptionDescription('o', '', [interface1]) api = Config(descr) - assert list(api.value.mandatory_warnings()) == ['ip_admin_eth0.ip_admin_eth0'] + assert list(api.value.mandatory()) == ['ip_admin_eth0.ip_admin_eth0'] def test_mandatory_master_empty(): @@ -462,17 +462,17 @@ def test_mandatory_warnings_master_empty(): api.option('ip_admin_eth0.ip_admin_eth0').value.set([undefined]) assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == [None] assert api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None - assert list(api.value.mandatory_warnings()) == ['ip_admin_eth0.ip_admin_eth0'] + assert list(api.value.mandatory()) == ['ip_admin_eth0.ip_admin_eth0'] api.option('ip_admin_eth0.ip_admin_eth0').value.reset() # api.option('ip_admin_eth0.ip_admin_eth0').value.set(['']) assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == [''] assert api.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == None - assert list(api.value.mandatory_warnings()) == ['ip_admin_eth0.ip_admin_eth0'] + assert list(api.value.mandatory()) == ['ip_admin_eth0.ip_admin_eth0'] # api.property.read_write() api.option('ip_admin_eth0.ip_admin_eth0').value.set(['ip']) - assert list(api.value.mandatory_warnings()) == [] + assert list(api.value.mandatory()) == [] def test_mandatory_slave(): @@ -517,9 +517,9 @@ def test_mandatory_warnings_slave(): assert api.option('ip_admin_eth0.ip_admin_eth0').value.get() == [] # api.property.read_write() - assert list(api.value.mandatory_warnings()) == [] + assert list(api.value.mandatory()) == [] api.option('ip_admin_eth0.ip_admin_eth0').value.set(['ip']) - assert list(api.value.mandatory_warnings()) == ['ip_admin_eth0.netmask_admin_eth0'] + assert list(api.value.mandatory()) == ['ip_admin_eth0.netmask_admin_eth0'] def test_mandatory_warnings_symlink(): @@ -528,19 +528,19 @@ def test_mandatory_warnings_symlink(): api.option('str').value.set('') api.property.read_write() api.option('str').value.get() - assert list(api.value.mandatory_warnings()) == ['str', 'str1', 'str3'] + assert list(api.value.mandatory()) == ['str', 'str1', 'str3'] api.option('str').property.add('frozen') api.property.read_only() - assert list(api.value.mandatory_warnings()) == ['str', 'str1', 'str3'] + assert list(api.value.mandatory()) == ['str', 'str1', 'str3'] #def test_mandatory_warnings_validate(): # descr = make_description3() # api = Config(descr) # api.option('str').value.set('') -# raises(ValueError, "list(api.value.mandatory_warnings())") +# raises(ValueError, "list(api.value.mandatory())") # api.option('str').value.set('test') -# raises(ValueError, "list(api.value.mandatory_warnings())") +# raises(ValueError, "list(api.value.mandatory())") def test_mandatory_warnings_validate_empty(): @@ -548,7 +548,7 @@ def test_mandatory_warnings_validate_empty(): api = Config(descr) api.option('str').value.set('') api.property.read_only() - assert list(api.value.mandatory_warnings()) == ['str', 'str1', 'str3', 'unicode1'] + assert list(api.value.mandatory()) == ['str', 'str1', 'str3', 'unicode1'] def test_mandatory_warnings_requires(): @@ -564,12 +564,12 @@ def test_mandatory_warnings_requires(): api.option('str').value.set('') api.property.read_write() api.option('str').value.get() - assert list(api.value.mandatory_warnings()) == ['str', 'str1', 'unicode2'] + assert list(api.value.mandatory()) == ['str', 'str1', 'unicode2'] api.property.read_only() - assert list(api.value.mandatory_warnings()) == ['str', 'str1', 'unicode2'] + assert list(api.value.mandatory()) == ['str', 'str1', 'unicode2'] api.property.read_write() api.option('str').value.set('yes') - assert list(api.value.mandatory_warnings()) == ['str1', 'unicode2', 'str3'] + assert list(api.value.mandatory()) == ['str1', 'unicode2', 'str3'] def test_mandatory_warnings_requires_masterslaves(): @@ -582,9 +582,9 @@ def test_mandatory_warnings_requires_masterslaves(): api = Config(descr) api.option('str').value.set('') api.option('master.str1').value.set(['str']) - assert list(api.value.mandatory_warnings()) == ['str'] + assert list(api.value.mandatory()) == ['str'] api.option('str').value.set('yes') - assert list(api.value.mandatory_warnings()) == ['master.str2'] + assert list(api.value.mandatory()) == ['master.str2'] def test_mandatory_warnings_requires_masterslaves_slave(): @@ -595,9 +595,9 @@ def test_mandatory_warnings_requires_masterslaves_slave(): descr = OptionDescription('tiram', '', [masterslave]) api = Config(descr) api.option('master.str').value.set(['str']) - assert list(api.value.mandatory_warnings()) == [] + assert list(api.value.mandatory()) == [] api.option('master.str1', 0).value.set('yes') - assert list(api.value.mandatory_warnings()) == ['master.str2'] + assert list(api.value.mandatory()) == ['master.str2'] def test_mandatory_od_disabled(): @@ -605,6 +605,6 @@ def test_mandatory_od_disabled(): descr = OptionDescription('od', '', [descr]) api = Config(descr) api.property.read_only() - assert list(api.value.mandatory_warnings()) == ['tiram.str1', 'tiram.unicode2', 'tiram.str3'] + assert list(api.value.mandatory()) == ['tiram.str1', 'tiram.unicode2', 'tiram.str3'] api.option('tiram').property.add('disabled') - assert list(api.value.mandatory_warnings()) == [] + assert list(api.value.mandatory()) == [] diff --git a/test/test_option_callback.py b/test/test_option_callback.py index 6b78f1c..66a3d7c 100644 --- a/test/test_option_callback.py +++ b/test/test_option_callback.py @@ -670,7 +670,7 @@ def test_callback_master_and_slaves_master3(): maconfig = OptionDescription('rootconfig', '', [interface1]) api = Config(maconfig) api.property.read_write() - assert list(api.value.mandatory_warnings()) == ['val1.val1'] + assert list(api.value.mandatory()) == ['val1.val1'] def test_callback_master_and_slaves_master4(): @@ -685,7 +685,7 @@ def test_callback_master_and_slaves_master4(): api.property.read_write() api.property.add('expert') api.permissive.set(frozenset(['expert'])) - assert list(api.value.mandatory_warnings()) == [] + assert list(api.value.mandatory()) == [] def test_consistency_master_and_slaves_master_mandatory_transitive(): @@ -709,7 +709,7 @@ def test_consistency_master_and_slaves_master_mandatory_transitive(): else: raise Exception('must raises') raises(PropertiesOptionError, "api.option('val3.val3').value.get()") - assert list(api.value.mandatory_warnings()) == [] + assert list(api.value.mandatory()) == [] def test_consistency_master_and_slaves_master_mandatory_non_transitive(): @@ -729,9 +729,9 @@ def test_consistency_master_and_slaves_master_mandatory_non_transitive(): api = Config(maconfig) api.property.read_write() if TIRAMISU_VERSION == 2: - assert list(api.value.mandatory_warnings()) == ["val1.val1", "val1.val2"] + assert list(api.value.mandatory()) == ["val1.val1", "val1.val2"] else: - assert list(api.value.mandatory_warnings()) == ["val1.val1"] + assert list(api.value.mandatory()) == ["val1.val1"] def test_callback_master_and_slaves_master_list(): diff --git a/test/test_option_consistency.py b/test/test_option_consistency.py index 25392c9..645cbee 100644 --- a/test/test_option_consistency.py +++ b/test/test_option_consistency.py @@ -736,7 +736,7 @@ def test_consistency_broadcast_warnings(): assert len(w) == 1 api.property.read_write() with warnings.catch_warnings(record=True) as w: - list(api.value.mandatory_warnings()) + list(api.value.mandatory()) assert len(w) == 0 diff --git a/tiramisu/api.py b/tiramisu/api.py index d632e86..8de5028 100644 --- a/tiramisu/api.py +++ b/tiramisu/api.py @@ -433,6 +433,23 @@ class _TiramisuOptionValueOption: self._test_slave_index() self._subconfig.delattr(self._option_bag) + def default(self): + """Get default value (default of option or calculated value)""" + option = self._option_bag.option + values = self._option_bag.config_bag.context.cfgimpl_get_values() + if option.impl_is_master_slaves('slave') and self._option_bag.index is None: + value = [] + length = self._subconfig.cfgimpl_get_length_slave(self._option_bag) + for idx in range(length): + soption_bag = OptionBag() + soption_bag.set_option(option, + self._option_bag.path, + idx, + self._option_bag.config_bag) + value.append(values.getdefaultvalue(soption_bag)) + else: + return values.getdefaultvalue(self._option_bag) + class _TiramisuOptionValueMaster: def pop(self, index): @@ -755,7 +772,7 @@ class TiramisuContextInformation(TiramisuContext): class TiramisuContextValue(TiramisuContext): """Manage config value""" - def mandatory_warnings(self): + def mandatory(self): """Return path of options with mandatory property without any value""" return self._config_bag.context.cfgimpl_get_values().mandatory_warnings(self._config_bag)