Rev 5901: (jameinel) Bug #613247, in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Fri May 20 11:07:59 UTC 2011
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 5901 [merge]
revision-id: pqm at pqm.ubuntu.com-20110520110731-8slefcqat6dr3asl
parent: pqm at pqm.ubuntu.com-20110519182037-fb2a951qw0j4834u
parent: john at arbash-meinel.com-20110519185931-9xcxj2ow2v1y4xvv
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2011-05-20 11:07:31 +0000
message:
(jameinel) Bug #613247,
clean up a bunch of test cases to avoid putting 'self' in the reference
cycle. (John A Meinel)
modified:
bzrlib/tests/blackbox/test_breakin.py test_breakin.py-20070424043903-qyy6zm4pj3h4sbp3-1
bzrlib/tests/blackbox/test_exceptions.py test_exceptions.py-20060604211237-yi2cxg0ose3xk4id-1
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/blackbox/test_serve.py test_serve.py-20060913064329-8t2pvmsikl4s3xhl-1
bzrlib/tests/per_repository_vf/test_check.py test_check.py-20110419124438-wxrtlhv70k7rxhg3-1
bzrlib/tests/test_chk_map.py test_chk_map.py-20081001014447-ue6kkuhofvdecvxa-2
bzrlib/tests/test_clean_tree.py test_clean_tree.py-20060603174249-ozlk5sl2166opxbk-1
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tests/test_registry.py test_lazy_factory.py-20060809213415-2gfvqadtvdn0phtg-2
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/tests/test_smart.py test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
=== modified file 'bzrlib/tests/blackbox/test_breakin.py'
--- a/bzrlib/tests/blackbox/test_breakin.py 2009-09-28 03:36:45 +0000
+++ b/bzrlib/tests/blackbox/test_breakin.py 2010-08-14 21:06:04 +0000
@@ -42,10 +42,6 @@
def setUp(self):
super(TestBreakin, self).setUp()
self.requireFeature(tests.BreakinFeature)
- if sys.platform == 'win32':
- self._send_signal = self._send_signal_win32
- else:
- self._send_signal = self._send_signal_via_kill
def _send_signal_via_kill(self, pid, sig_type):
if sig_type == 'break':
@@ -89,6 +85,11 @@
exit_code = breakin.determine_signal()
ctypes.windll.kernel32.TerminateProcess(pid, exit_code)
+ if sys.platform == 'win32':
+ _send_signal = _send_signal_win32
+ else:
+ _send_signal = _send_signal_via_kill
+
def _popen(self, *args, **kwargs):
if sys.platform == 'win32':
CREATE_NEW_PROCESS_GROUP = 512
=== modified file 'bzrlib/tests/blackbox/test_exceptions.py'
--- a/bzrlib/tests/blackbox/test_exceptions.py 2011-05-11 11:35:28 +0000
+++ b/bzrlib/tests/blackbox/test_exceptions.py 2011-05-18 18:57:24 +0000
@@ -123,7 +123,7 @@
check = self.assertContainsRe
else:
check = self.assertNotContainsRe
- check(self._get_log(keep_log_file=True), 'WARNING.*bzr upgrade')
+ check(self.get_log(), 'WARNING.*bzr upgrade')
def test_repository_deprecation_warning(self):
"""Old formats give a warning"""
=== modified file 'bzrlib/tests/blackbox/test_log.py'
--- a/bzrlib/tests/blackbox/test_log.py 2011-03-23 10:34:22 +0000
+++ b/bzrlib/tests/blackbox/test_log.py 2011-05-18 18:49:43 +0000
@@ -75,6 +75,8 @@
self.log_catcher = test_log.LogCatcher(*args, **kwargs)
# Always return our own log formatter
return self.log_catcher
+ # Break cycle with closure over self on cleanup by removing method
+ self.addCleanup(setattr, MyLogFormatter, "__new__", None)
def getme(branch):
# Always return our own log formatter class hijacking the
=== modified file 'bzrlib/tests/blackbox/test_serve.py'
--- a/bzrlib/tests/blackbox/test_serve.py 2011-01-14 22:12:08 +0000
+++ b/bzrlib/tests/blackbox/test_serve.py 2011-05-18 18:49:43 +0000
@@ -274,7 +274,8 @@
class TestUserdirExpansion(TestCaseWithMemoryTransport):
- def fake_expanduser(self, path):
+ @staticmethod
+ def fake_expanduser(path):
"""A simple, environment-independent, function for the duration of this
test.
=== modified file 'bzrlib/tests/per_repository_vf/test_check.py'
--- a/bzrlib/tests/per_repository_vf/test_check.py 2011-05-13 14:58:18 +0000
+++ b/bzrlib/tests/per_repository_vf/test_check.py 2011-05-18 18:49:43 +0000
@@ -104,8 +104,8 @@
needed_refs.setdefault(ref, []).append(tree.branch)
self.tree_check = tree._check
self.branch_check = tree.branch.check
- tree._check = self.tree_callback
- tree.branch.check = self.branch_callback
+ self.overrideAttr(tree, "_check", self.tree_callback)
+ self.overrideAttr(tree.branch, "check", self.branch_callback)
self.callbacks = []
tree.branch.repository.check([revid], callback_refs=needed_refs)
self.assertNotEqual([], self.callbacks)
=== modified file 'bzrlib/tests/test_chk_map.py'
--- a/bzrlib/tests/test_chk_map.py 2010-10-08 02:13:25 +0000
+++ b/bzrlib/tests/test_chk_map.py 2010-11-12 15:26:01 +0000
@@ -1108,7 +1108,7 @@
basis_get = basis._store.get_record_stream
def get_record_stream(keys, order, fulltext):
if ('sha1:1adf7c0d1b9140ab5f33bb64c6275fa78b1580b7',) in keys:
- self.fail("'aaa' pointer was followed %r" % keys)
+ raise AssertionError("'aaa' pointer was followed %r" % keys)
return basis_get(keys, order, fulltext)
basis._store.get_record_stream = get_record_stream
result = sorted(list(target.iter_changes(basis)))
=== modified file 'bzrlib/tests/test_clean_tree.py'
--- a/bzrlib/tests/test_clean_tree.py 2011-05-13 12:51:05 +0000
+++ b/bzrlib/tests/test_clean_tree.py 2011-05-18 18:49:43 +0000
@@ -98,7 +98,6 @@
def _dummy_rmtree(path, ignore_errors=False, onerror=None):
"""Call user supplied error handler onerror.
"""
- self.assertTrue(isinstance(onerror, types.FunctionType))
# Indicate failure in removing 'path' if path is subdir0
# We later check to ensure that this is indicated
# to the user as a warning. We raise OSError to construct
=== modified file 'bzrlib/tests/test_http.py'
--- a/bzrlib/tests/test_http.py 2011-03-08 16:16:18 +0000
+++ b/bzrlib/tests/test_http.py 2011-05-18 18:49:43 +0000
@@ -2013,11 +2013,12 @@
tests.TestCase.setUp(self)
self.server = self._activity_server(self._protocol_version)
self.server.start_server()
- self.activities = {}
+ _activities = {} # Don't close over self and create a cycle
def report_activity(t, bytes, direction):
- count = self.activities.get(direction, 0)
+ count = _activities.get(direction, 0)
count += bytes
- self.activities[direction] = count
+ _activities[direction] = count
+ self.activities = _activities
# We override at class level because constructors may propagate the
# bound method and render instance overriding ineffective (an
=== modified file 'bzrlib/tests/test_merge.py'
--- a/bzrlib/tests/test_merge.py 2011-05-13 12:51:05 +0000
+++ b/bzrlib/tests/test_merge.py 2011-05-18 18:49:43 +0000
@@ -2863,14 +2863,14 @@
def get_merger_factory(self):
# Allows the inner methods to access the test attributes
- test = self
+ calls = self.calls
class FooMerger(_mod_merge.ConfigurableFileMerger):
name_prefix = "foo"
default_files = ['bar']
def merge_text(self, params):
- test.calls.append('merge_text')
+ calls.append('merge_text')
return ('not_applicable', None)
def factory(merger):
=== modified file 'bzrlib/tests/test_registry.py'
--- a/bzrlib/tests/test_registry.py 2011-05-13 12:51:05 +0000
+++ b/bzrlib/tests/test_registry.py 2011-05-18 18:49:43 +0000
@@ -215,11 +215,13 @@
# We create a registry with "official" objects and "hidden"
# objects. The later represent the side effects that led to bug #277048
# and #430510
- self.registry = registry.Registry()
+ _registry = registry.Registry()
def register_more():
- self.registry.register('hidden', None)
+ _registry.register('hidden', None)
+ # Avoid closing over self by binding local variable
+ self.registry = _registry
self.registry.register('passive', None)
self.registry.register('active', register_more)
self.registry.register('passive-too', None)
@@ -229,7 +231,7 @@
def get_obj(inner_self):
# Surprise ! Getting a registered object (think lazy loaded
# module) register yet another object !
- self.registry.register('more hidden', None)
+ _registry.register('more hidden', None)
return inner_self._obj
self.registry.register('hacky', None)
=== modified file 'bzrlib/tests/test_repository.py'
--- a/bzrlib/tests/test_repository.py 2011-05-13 12:51:05 +0000
+++ b/bzrlib/tests/test_repository.py 2011-05-18 18:49:43 +0000
@@ -1602,7 +1602,7 @@
self.addCleanup(target.unlock)
source = source_tree.branch.repository._get_source(target._format)
self.orig_pack = target.pack
- target.pack = self.log_pack
+ self.overrideAttr(target, "pack", self.log_pack)
search = target.search_missing_revision_ids(
source_tree.branch.repository, revision_ids=[tip])
stream = source.get_stream(search)
@@ -1626,7 +1626,7 @@
self.addCleanup(target.unlock)
source = source_tree.branch.repository
self.orig_pack = target.pack
- target.pack = self.log_pack
+ self.overrideAttr(target, "pack", self.log_pack)
target.fetch(source)
if expect_pack_called:
self.assertLength(1, self.calls)
=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py 2011-05-18 19:49:22 +0000
+++ b/bzrlib/tests/test_selftest.py 2011-05-20 11:07:31 +0000
@@ -36,7 +36,7 @@
DocTestMatches,
Equals,
)
-import testtools.tests.helpers
+import testtools.testresult.doubles
import bzrlib
from bzrlib import (
@@ -721,7 +721,7 @@
def test_profiles_tests(self):
self.requireFeature(test_lsprof.LSProfFeature)
- terminal = testtools.tests.helpers.ExtendedTestResult()
+ terminal = testtools.testresult.doubles.ExtendedTestResult()
result = tests.ProfileResult(terminal)
class Sample(tests.TestCase):
def a(self):
@@ -744,7 +744,7 @@
descriptions=0,
verbosity=1,
)
- capture = testtools.tests.helpers.ExtendedTestResult()
+ capture = testtools.testresult.doubles.ExtendedTestResult()
test_case.run(MultiTestResult(result, capture))
run_case = capture._events[0][1]
timed_string = result._testTimeString(run_case)
@@ -1045,7 +1045,7 @@
test = unittest.TestSuite()
test.addTest(Test("known_failure_test"))
def failing_test():
- self.fail('foo')
+ raise AssertionError('foo')
test.addTest(unittest.FunctionTestCase(failing_test))
stream = StringIO()
runner = tests.TextTestRunner(stream=stream)
@@ -1059,7 +1059,7 @@
'^----------------------------------------------------------------------\n'
'Traceback \\(most recent call last\\):\n'
' .*' # File .*, line .*, in failing_test' - but maybe not from .pyc
- ' self.fail\\(\'foo\'\\)\n'
+ ' raise AssertionError\\(\'foo\'\\)\n'
'.*'
'^----------------------------------------------------------------------\n'
'.*'
@@ -1071,7 +1071,7 @@
# the final output.
class Test(tests.TestCase):
def known_failure_test(self):
- self.expectFailure('failed', self.assertTrue, False)
+ self.knownFailure("Never works...")
test = Test("known_failure_test")
stream = StringIO()
runner = tests.TextTestRunner(stream=stream)
@@ -2037,17 +2037,17 @@
def test_lsprof_tests(self):
self.requireFeature(test_lsprof.LSProfFeature)
- calls = []
+ results = []
class Test(object):
def __call__(test, result):
test.run(result)
def run(test, result):
- self.assertIsInstance(result, ExtendedToOriginalDecorator)
- calls.append("called")
+ results.append(result)
def countTestCases(self):
return 1
self.run_selftest(test_suite_factory=Test, lsprof_tests=True)
- self.assertLength(1, calls)
+ self.assertLength(1, results)
+ self.assertIsInstance(results.pop(), ExtendedToOriginalDecorator)
def test_random(self):
# test randomising by listing a number of tests.
=== modified file 'bzrlib/tests/test_smart.py'
--- a/bzrlib/tests/test_smart.py 2011-04-19 14:17:24 +0000
+++ b/bzrlib/tests/test_smart.py 2011-05-18 18:49:43 +0000
@@ -99,7 +99,7 @@
# the default or a parameterized class, but rather use the
# TestCaseWithTransport infrastructure to set up a smart server and
# transport.
- self.transport_server = self.make_transport_server
+ self.overrideAttr(self, "transport_server", self.make_transport_server)
def make_transport_server(self):
return test_server.SmartTCPServer_for_testing('-' + self.id())
=== modified file 'bzrlib/tests/test_smart_transport.py'
--- a/bzrlib/tests/test_smart_transport.py 2011-03-02 20:39:58 +0000
+++ b/bzrlib/tests/test_smart_transport.py 2011-05-18 18:49:43 +0000
@@ -1493,6 +1493,7 @@
smart_protocol._has_dispatched = True
smart_protocol.request = _mod_request.SmartServerRequestHandler(
None, _mod_request.request_handlers, '/')
+ # GZ 2010-08-10: Cycle with closure affects 4 tests
class FakeCommand(_mod_request.SmartServerRequest):
def do_body(self_cmd, body_bytes):
self.end_received = True
=== modified file 'bzrlib/tests/test_workingtree_4.py'
--- a/bzrlib/tests/test_workingtree_4.py 2011-05-18 09:52:44 +0000
+++ b/bzrlib/tests/test_workingtree_4.py 2011-05-20 11:07:31 +0000
@@ -174,9 +174,9 @@
# it's given; any calls to forbidden methods will raise an
# AssertionError
repo = tree.branch.repository
- repo.get_revision = self.fail
- repo.get_inventory = self.fail
- repo._get_inventory_xml = self.fail
+ self.overrideAttr(repo, "get_revision", self.fail)
+ self.overrideAttr(repo, "get_inventory", self.fail)
+ self.overrideAttr(repo, "_get_inventory_xml", self.fail)
# try to set the parent trees.
tree.set_parent_trees([(rev1, rev1_tree)])
@@ -214,8 +214,8 @@
# answer 'get_parent_ids' for the revision tree- dirstate does not
# cache the parents of a parent tree at this point.
#repo.get_revision = self.fail
- repo.get_inventory = self.fail
- repo._get_inventory_xml = self.fail
+ self.overrideAttr(repo, "get_inventory", self.fail)
+ self.overrideAttr(repo, "_get_inventory_xml", self.fail)
# set the parent trees.
tree.set_parent_trees([(rev1, rev1_tree), (rev2, rev2_tree)])
# read the first tree
More information about the bazaar-commits
mailing list