[Python-checkins] distutils2: refactored test_test to make more use of addCleanup
tarek.ziade
python-checkins at python.org
Sun Sep 19 10:20:22 CEST 2010
tarek.ziade pushed 8d563724b830 to distutils2:
http://hg.python.org/distutils2/rev/8d563724b830
changeset: 636:8d563724b830
user: Konrad Delong <konryd at gmail.com>
date: Sun Aug 15 20:19:25 2010 +0200
summary: refactored test_test to make more use of addCleanup
files: src/distutils2/tests/test_test.py
diff --git a/src/distutils2/tests/test_test.py b/src/distutils2/tests/test_test.py
--- a/src/distutils2/tests/test_test.py
+++ b/src/distutils2/tests/test_test.py
@@ -48,19 +48,6 @@
del sys.modules['unittest2']
return wrapper
-def with_ut_isolated(func):
- def wrapper(*args):
- import unittest as ut1
-
- orig_discover = getattr(ut1.TestLoader, 'discover', None)
- try:
- args += (ut1,)
- return func(*args)
- finally:
- if orig_discover is not None:
- ut1.TestLoader.discover = orig_discover
- return wrapper
-
class TestTest(TempdirManager,
unittest.TestCase):
@@ -91,10 +78,22 @@
shutil.copytree(pkg_dir, temp_pkg_dir)
return temp_pkg_dir
- def safely_replace(self, obj, attr, new_val):
- orig_val = getattr(obj, attr)
- setattr(obj, attr, new_val)
- self.addCleanup(lambda: setattr(obj, attr, orig_val))
+ def safely_replace(self, obj, attr, new_val=None, delete=False):
+ orig_has_attr = hasattr(obj, attr)
+ orig_val = getattr(obj, attr, None)
+
+ if delete is False:
+ setattr(obj, attr, new_val)
+ elif hasattr(obj, attr):
+ delattr(obj, attr)
+
+ def do_cleanup():
+ if orig_has_attr:
+ setattr(obj, attr, orig_val)
+ elif hasattr(obj, attr):
+ delattr(obj, attr)
+
+ self.addCleanup(do_cleanup)
def test_runs_unittest(self):
module_name, a_module = self.prepare_a_module()
@@ -168,22 +167,21 @@
cmd.run()
self.assertEqual(["runner called"], record)
- @with_ut_isolated
@with_mock_ut2_module
- def test_gets_unittest_discovery(self, ut1, mock_ut2):
+ def test_gets_unittest_discovery(self, mock_ut2):
dist = Distribution()
cmd = test(dist)
- ut1.TestLoader.discover = lambda: None
+ import unittest as ut1
+ self.safely_replace(ut1.TestLoader, "discover", lambda: None)
self.assertEqual(cmd.get_ut_with_discovery(), ut1)
del ut1.TestLoader.discover
self.assertEqual(cmd.get_ut_with_discovery(), mock_ut2)
- @with_ut_isolated
@with_mock_ut2_module
- def test_calls_discover(self, ut1, mock_ut2):
- if hasattr(ut1.TestLoader, "discover"):
- del ut1.TestLoader.discover
+ def test_calls_discover(self, mock_ut2):
+ import unittest as ut1
+ self.safely_replace(ut1.TestLoader, "discover", delete=True)
record = []
mock_ut2.TestLoader.discover = lambda self, path: record.append(path)
dist = Distribution()
--
Repository URL: http://hg.python.org/distutils2
More information about the Python-checkins
mailing list