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