Finished Env._finalize() and corresponding unit tests

This commit is contained in:
Jason Gerard DeRose 2008-10-24 20:21:27 -06:00
parent ac4efac394
commit 759734864e
2 changed files with 31 additions and 6 deletions

View File

@ -168,7 +168,7 @@ class Env(object):
and the location of the configuration file.
"""
self.__doing('_bootstrap')
for (key, value) in overrides.items():
for (key, value) in overrides.iteritems():
self[key] = value
if 'in_tree' not in self:
if self.bin == self.site_packages and \
@ -209,11 +209,11 @@ class Env(object):
self.log = path.join(self.dot_ipa, 'log', name)
else:
self.log = path.join('/', 'var', 'log', 'ipa', name)
for (key, value) in defaults.items():
for (key, value) in defaults.iteritems():
if key not in self:
self[key] = value
def _finalize(self):
def _finalize(self, **lastchance):
"""
Finalize and lock environment.
@ -222,11 +222,14 @@ class Env(object):
"""
self.__doing('_finalize')
self.__do_if_not_done('_finalize_core')
for (key, value) in lastchance.iteritems():
if key not in self:
self[key] = value
self.__lock__()
def _merge_config(self, conf_file):
"""
Merge in values from ``conf_file`` into this `Env`.
Merge values from ``conf_file`` into this `Env`.
"""
section = constants.CONFIG_SECTION
if not path.isfile(conf_file):
@ -258,6 +261,9 @@ class Env(object):
)
object.__setattr__(self, '_Env__locked', True)
def __islocked__(self):
return self.__locked
def __getattr__(self, name):
"""
Return the attribute named ``name``.

View File

@ -170,8 +170,8 @@ key3 = var3
config_good = """
[global]
yes = TRUE
no = False
yes = tRUE
no = fALse
number = 42
"""
@ -357,6 +357,25 @@ class test_Env(ClassChecker):
e = raises(StandardError, o._finalize)
assert str(e) == 'Env._finalize() already called'
# Check that _finalize() calls __lock__()
(o, home) = self.new()
assert o.__islocked__() is False
o._finalize()
assert o.__islocked__() is True
e = raises(StandardError, o.__lock__)
assert str(e) == 'Env.__lock__() already called'
# Check that **lastchance works
(o, home) = self.finalize_core()
key = 'just_one_more_key'
value = 'with one more value'
lastchance = {key: value}
assert key not in o
assert o._isdone('_finalize') is False
o._finalize(**lastchance)
assert key in o
assert o[key] is value
def test_merge_config(self):
"""
Test the `ipalib.config.Env._merge_config` method.