Rev 6073: (jameinel) Teach TestCase.overrideAttr how to handle attributes that don't in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/2.4/
Patch Queue Manager
pqm at pqm.ubuntu.com
Tue Nov 6 18:55:53 UTC 2012
At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/2.4/
------------------------------------------------------------
revno: 6073 [merge]
revision-id: pqm at pqm.ubuntu.com-20121106185552-58jmp21g8cxqsy16
parent: pqm at pqm.ubuntu.com-20120831164847-z5fod1ok40qeekom
parent: john at arbash-meinel.com-20121105112040-bt9x2f4ietl6ztjg
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: 2.4
timestamp: Tue 2012-11-06 18:55:52 +0000
message:
(jameinel) Teach TestCase.overrideAttr how to handle attributes that don't
exist yet. (John A Meinel)
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py 2011-11-30 22:47:17 +0000
+++ b/bzrlib/tests/__init__.py 2012-11-05 11:20:40 +0000
@@ -1751,9 +1751,15 @@
:returns: The actual attr value.
"""
- value = getattr(obj, attr_name)
# The actual value is captured by the call below
- self.addCleanup(setattr, obj, attr_name, value)
+ value = getattr(obj, attr_name, _unitialized_attr)
+ if value is _unitialized_attr:
+ # When the test completes, the attribute should not exist, but if
+ # we aren't setting a value, we don't need to do anything.
+ if new is not _unitialized_attr:
+ self.addCleanup(delattr, obj, attr_name)
+ else:
+ self.addCleanup(setattr, obj, attr_name, value)
if new is not _unitialized_attr:
setattr(obj, attr_name, new)
return value
=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py 2011-10-26 16:42:12 +0000
+++ b/bzrlib/tests/test_selftest.py 2012-11-05 11:20:40 +0000
@@ -1651,6 +1651,12 @@
self.assertRaises(AssertionError,
self.assertListRaises, _TestException, success_generator)
+ def _run_successful_test(self, test):
+ result = testtools.TestResult()
+ test.run(result)
+ self.assertTrue(result.wasSuccessful())
+ return result
+
def test_overrideAttr_without_value(self):
self.test_attr = 'original' # Define a test attribute
obj = self # Make 'obj' visible to the embedded test
@@ -1666,8 +1672,7 @@
obj.test_attr = 'modified'
self.assertEqual('modified', obj.test_attr)
- test = Test('test_value')
- test.run(unittest.TestResult())
+ self._run_successful_test(Test('test_value'))
self.assertEqual('original', obj.test_attr)
def test_overrideAttr_with_value(self):
@@ -1683,10 +1688,41 @@
self.assertEqual('original', self.orig)
self.assertEqual('modified', obj.test_attr)
- test = Test('test_value')
- test.run(unittest.TestResult())
+ self._run_successful_test(Test('test_value'))
self.assertEqual('original', obj.test_attr)
+ def test_overrideAttr_with_no_existing_value_and_value(self):
+ # Do not define the test_attribute
+ obj = self # Make 'obj' visible to the embedded test
+ class Test(tests.TestCase):
+
+ def setUp(self):
+ tests.TestCase.setUp(self)
+ self.orig = self.overrideAttr(obj, 'test_attr', new='modified')
+
+ def test_value(self):
+ self.assertEqual(tests._unitialized_attr, self.orig)
+ self.assertEqual('modified', obj.test_attr)
+
+ self._run_successful_test(Test('test_value'))
+ self.assertRaises(AttributeError, getattr, obj, 'test_attr')
+
+ def test_overrideAttr_with_no_existing_value_and_no_value(self):
+ # Do not define the test_attribute
+ obj = self # Make 'obj' visible to the embedded test
+ class Test(tests.TestCase):
+
+ def setUp(self):
+ tests.TestCase.setUp(self)
+ self.orig = self.overrideAttr(obj, 'test_attr')
+
+ def test_value(self):
+ self.assertEqual(tests._unitialized_attr, self.orig)
+ self.assertRaises(AttributeError, getattr, obj, 'test_attr')
+
+ self._run_successful_test(Test('test_value'))
+ self.assertRaises(AttributeError, getattr, obj, 'test_attr')
+
def test_recordCalls(self):
from bzrlib.tests import test_selftest
calls = self.recordCalls(
More information about the bazaar-commits
mailing list