add _path in reset for performance + more tests
This commit is contained in:
parent
5beade8b2c
commit
c2b16d2605
3 changed files with 37 additions and 12 deletions
|
@ -345,6 +345,10 @@ def test_reset_properties():
|
||||||
setting.reset(all_properties=True)
|
setting.reset(all_properties=True)
|
||||||
assert setting._p_.get_properties(cfg) == {}
|
assert setting._p_.get_properties(cfg) == {}
|
||||||
raises(ValueError, 'setting.reset(all_properties=True, opt=option)')
|
raises(ValueError, 'setting.reset(all_properties=True, opt=option)')
|
||||||
|
a = descr.wantref
|
||||||
|
setting[a].append('test')
|
||||||
|
setting[a].reset()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def test_reset_multiple():
|
def test_reset_multiple():
|
||||||
|
|
|
@ -438,7 +438,12 @@ def test_requires_requirement_append():
|
||||||
od = OptionDescription('service', '', [a, b])
|
od = OptionDescription('service', '', [a, b])
|
||||||
c = Config(od)
|
c = Config(od)
|
||||||
c.read_write()
|
c.read_write()
|
||||||
|
str(c.cfgimpl_get_settings())
|
||||||
|
str(c.cfgimpl_get_settings()[b])
|
||||||
raises(ValueError, 'c.cfgimpl_get_settings()[b].append("disabled")')
|
raises(ValueError, 'c.cfgimpl_get_settings()[b].append("disabled")')
|
||||||
|
c.activate_service = False
|
||||||
|
# disabled is now set, test to remove disabled before store in storage
|
||||||
|
c.cfgimpl_get_settings()[b].append("test")
|
||||||
|
|
||||||
|
|
||||||
def test_requires_recursive_path():
|
def test_requires_recursive_path():
|
||||||
|
@ -450,3 +455,24 @@ def test_requires_recursive_path():
|
||||||
c = Config(od)
|
c = Config(od)
|
||||||
c.read_write()
|
c.read_write()
|
||||||
raises(RequirementError, 'c.service.a')
|
raises(RequirementError, 'c.service.a')
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_properties_with_None_path():
|
||||||
|
a = BoolOption('activate_service', '', True)
|
||||||
|
b = IPOption('ip_address_service', '',
|
||||||
|
requires=[{'option': a, 'expected': False, 'action': 'disabled'}])
|
||||||
|
od1 = OptionDescription('service', '', [a, b], requires=[{'option': a, 'expected': False, 'action': 'disabled'}])
|
||||||
|
od = OptionDescription('base', '', [od1])
|
||||||
|
c = Config(od)
|
||||||
|
c.read_write()
|
||||||
|
raises(ValueError, "c.cfgimpl_get_settings()._getproperties(a)")
|
||||||
|
|
||||||
|
|
||||||
|
def test_set_item():
|
||||||
|
a = BoolOption('activate_service', '', True)
|
||||||
|
b = IPOption('ip_address_service', '')
|
||||||
|
od1 = OptionDescription('service', '', [a, b])
|
||||||
|
od = OptionDescription('base', '', [od1])
|
||||||
|
c = Config(od)
|
||||||
|
c.read_write()
|
||||||
|
raises(ValueError, 'c.cfgimpl_get_settings()[a] = ("test",)')
|
||||||
|
|
|
@ -175,7 +175,7 @@ class Property(object):
|
||||||
self._setting._setproperties(self._properties, self._opt, self._path)
|
self._setting._setproperties(self._properties, self._opt, self._path)
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self._setting.reset(path=self._path)
|
self._setting.reset(_path=self._path)
|
||||||
|
|
||||||
def __contains__(self, propname):
|
def __contains__(self, propname):
|
||||||
return propname in self._properties
|
return propname in self._properties
|
||||||
|
@ -216,10 +216,7 @@ class Settings(object):
|
||||||
return str(list(self._getproperties()))
|
return str(list(self._getproperties()))
|
||||||
|
|
||||||
def __getitem__(self, opt):
|
def __getitem__(self, opt):
|
||||||
if opt is None:
|
path = self._get_opt_path(opt)
|
||||||
path = None
|
|
||||||
else:
|
|
||||||
path = self._get_opt_path(opt)
|
|
||||||
return self._getitem(opt, path)
|
return self._getitem(opt, path)
|
||||||
|
|
||||||
def _getitem(self, opt, path):
|
def _getitem(self, opt, path):
|
||||||
|
@ -228,18 +225,16 @@ class Settings(object):
|
||||||
def __setitem__(self, opt, value):
|
def __setitem__(self, opt, value):
|
||||||
raise ValueError('you must only append/remove properties')
|
raise ValueError('you must only append/remove properties')
|
||||||
|
|
||||||
def reset(self, opt=None, all_properties=False):
|
def reset(self, opt=None, _path=None, all_properties=False):
|
||||||
if all_properties and opt:
|
if all_properties and (_path or opt):
|
||||||
raise ValueError(_('opt and all_properties must not be set '
|
raise ValueError(_('opt and all_properties must not be set '
|
||||||
'together in reset'))
|
'together in reset'))
|
||||||
if all_properties:
|
if all_properties:
|
||||||
self._p_.reset_all_propertives()
|
self._p_.reset_all_propertives()
|
||||||
else:
|
else:
|
||||||
if opt is None:
|
if opt is not None and _path is None:
|
||||||
path = None
|
_path = self._get_opt_path(opt)
|
||||||
else:
|
self._p_.reset_properties(_path)
|
||||||
path = self._get_opt_path(opt)
|
|
||||||
self._p_.reset_properties(path)
|
|
||||||
self.context.cfgimpl_reset_cache()
|
self.context.cfgimpl_reset_cache()
|
||||||
|
|
||||||
def _getproperties(self, opt=None, path=None, is_apply_req=True):
|
def _getproperties(self, opt=None, path=None, is_apply_req=True):
|
||||||
|
|
Loading…
Reference in a new issue