mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Added tests.util.TempHome class for created a tempdir and setting os.environ['HOME'] to it; updated various unit tests for Env so they are run using a tempdir for home
This commit is contained in:
parent
2a41db33c6
commit
8ca44bcbfa
@ -27,7 +27,7 @@ from os import path
|
||||
import sys
|
||||
from tests.util import raises, setitem, delitem, ClassChecker
|
||||
from tests.util import getitem, setitem, delitem
|
||||
from tests.util import TempDir
|
||||
from tests.util import TempDir, TempHome
|
||||
from ipalib import config
|
||||
|
||||
|
||||
@ -181,34 +181,42 @@ class test_Env(ClassChecker):
|
||||
|
||||
_cls = config.Env
|
||||
|
||||
def new(self):
|
||||
"""
|
||||
Set os.environ['HOME'] to a tempdir.
|
||||
|
||||
Returns tuple with new Env instance and the TempHome instance.
|
||||
"""
|
||||
home = TempHome()
|
||||
return (self.cls(), home)
|
||||
|
||||
def test_init(self):
|
||||
"""
|
||||
Test the `ipalib.config.Env.__init__` method.
|
||||
"""
|
||||
o = self.cls()
|
||||
(o, home) = self.new()
|
||||
ipalib = path.dirname(path.abspath(config.__file__))
|
||||
assert o.ipalib == ipalib
|
||||
assert o.site_packages == path.dirname(ipalib)
|
||||
assert o.script == path.abspath(sys.argv[0])
|
||||
assert o.bin == path.dirname(path.abspath(sys.argv[0]))
|
||||
assert o.home == os.environ['HOME']
|
||||
assert o.dot_ipa == path.join(os.environ['HOME'], '.ipa')
|
||||
assert o.home == home.path
|
||||
assert o.dot_ipa == home.join('.ipa')
|
||||
|
||||
def bootstrap(self, **overrides):
|
||||
o = self.cls()
|
||||
(o, home) = self.new()
|
||||
o._bootstrap(**overrides)
|
||||
e = raises(StandardError, o._bootstrap)
|
||||
assert str(e) == 'Env._bootstrap() already called'
|
||||
return o
|
||||
return (o, home)
|
||||
|
||||
def test_bootstrap(self):
|
||||
"""
|
||||
Test the `ipalib.config.Env._bootstrap` method.
|
||||
"""
|
||||
dot_ipa = path.join(os.environ['HOME'], '.ipa')
|
||||
|
||||
# Test defaults created by _bootstrap():
|
||||
o = self.cls()
|
||||
(o, home) = self.new()
|
||||
assert 'in_tree' not in o
|
||||
assert 'context' not in o
|
||||
assert 'conf' not in o
|
||||
@ -218,11 +226,11 @@ class test_Env(ClassChecker):
|
||||
assert o.conf == '/etc/ipa/default.conf'
|
||||
|
||||
# Test overriding values created by _bootstrap()
|
||||
o = self.bootstrap(in_tree='true', context='server')
|
||||
(o, home) = self.bootstrap(in_tree='true', context='server')
|
||||
assert o.in_tree is True
|
||||
assert o.context == 'server'
|
||||
assert o.conf == path.join(dot_ipa, 'server.conf')
|
||||
o = self.bootstrap(conf='/my/wacky/whatever.conf')
|
||||
assert o.conf == home.join('.ipa', 'server.conf')
|
||||
(o, home) = self.bootstrap(conf='/my/wacky/whatever.conf')
|
||||
assert o.in_tree is False
|
||||
assert o.context == 'default'
|
||||
assert o.conf == '/my/wacky/whatever.conf'
|
||||
@ -237,7 +245,7 @@ class test_Env(ClassChecker):
|
||||
override = dict(
|
||||
(k, u' %s ' % v) for (k, v) in kw.items()
|
||||
)
|
||||
o = self.cls()
|
||||
(o, home) = self.new()
|
||||
for key in kw:
|
||||
assert key not in o
|
||||
o._bootstrap(**override)
|
||||
|
@ -42,8 +42,9 @@ class TempDir(object):
|
||||
path = property(__get_path)
|
||||
|
||||
def rmtree(self):
|
||||
shutil.rmtree(self.path)
|
||||
self.__path = None
|
||||
if self.__path is not None:
|
||||
shutil.rmtree(self.path)
|
||||
self.__path = None
|
||||
|
||||
def makedirs(self, *parts):
|
||||
d = self.join(*parts)
|
||||
@ -67,6 +68,17 @@ class TempDir(object):
|
||||
self.rmtree()
|
||||
|
||||
|
||||
class TempHome(TempDir):
|
||||
def __init__(self):
|
||||
super(TempHome, self).__init__()
|
||||
self.__home = os.environ['HOME']
|
||||
os.environ['HOME'] = self.path
|
||||
|
||||
def rmtree(self):
|
||||
os.environ['HOME'] = self.__home
|
||||
super(TempHome, self).rmtree()
|
||||
|
||||
|
||||
class ExceptionNotRaised(Exception):
|
||||
"""
|
||||
Exception raised when an *expected* exception is *not* raised during a
|
||||
|
Loading…
Reference in New Issue
Block a user