summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-10-24 16:02:26 -0600
committerJason Gerard DeRose <jderose@redhat.com>2008-10-24 16:02:26 -0600
commit8ca44bcbfa2aec0c7c84205dc08c81f711a22c5d (patch)
tree35a3dfbdd3c48843318f66cabf1024d2e69c3fe2
parent2a41db33c6d9f6efa826e16d91eba76defe899d2 (diff)
downloadfreeipa-8ca44bcbfa2aec0c7c84205dc08c81f711a22c5d.tar.gz
freeipa-8ca44bcbfa2aec0c7c84205dc08c81f711a22c5d.tar.xz
freeipa-8ca44bcbfa2aec0c7c84205dc08c81f711a22c5d.zip
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
-rw-r--r--tests/test_ipalib/test_config.py32
-rw-r--r--tests/util.py16
2 files changed, 34 insertions, 14 deletions
diff --git a/tests/test_ipalib/test_config.py b/tests/test_ipalib/test_config.py
index 67eedd141..01ff2f01a 100644
--- a/tests/test_ipalib/test_config.py
+++ b/tests/test_ipalib/test_config.py
@@ -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)
diff --git a/tests/util.py b/tests/util.py
index a813903ae..1cbc4e312 100644
--- a/tests/util.py
+++ b/tests/util.py
@@ -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