Rev 4638: Fix selftest tests for --transport to test each layer precisely. in http://bazaar.launchpad.net/~lifeless/bzr/test-speed
Robert Collins
robertc at robertcollins.net
Mon Aug 24 00:20:36 BST 2009
At http://bazaar.launchpad.net/~lifeless/bzr/test-speed
------------------------------------------------------------
revno: 4638
revision-id: robertc at robertcollins.net-20090823232033-bz1c16hevpt5hkem
parent: robertc at robertcollins.net-20090823221551-rfquxm9tilojjeb0
committer: Robert Collins <robertc at robertcollins.net>
branch nick: test-speed
timestamp: Mon 2009-08-24 09:20:33 +1000
message:
Fix selftest tests for --transport to test each layer precisely.
=== modified file 'bzrlib/tests/blackbox/test_selftest.py'
--- a/bzrlib/tests/blackbox/test_selftest.py 2009-08-23 22:15:51 +0000
+++ b/bzrlib/tests/blackbox/test_selftest.py 2009-08-23 23:20:33 +0000
@@ -43,54 +43,54 @@
class TestOptions(TestCase):
- current_test = None
-
def test_transport_set_to_sftp(self):
- # test the --transport option has taken effect from within the
- # test_transport test
+ # Test that we can pass a transport to the selftest core - sftp
+ # version.
try:
import bzrlib.transport.sftp
except ParamikoNotPresent:
raise TestSkipped("Paramiko not present")
- if TestOptions.current_test != "test_transport_set_to_sftp":
- return
+ params = self.get_params_passed_to_core('selftest --transport=sftp')
self.assertEqual(bzrlib.transport.sftp.SFTPAbsoluteServer,
- bzrlib.tests.default_transport)
+ params[1]["transport"])
def test_transport_set_to_memory(self):
- # test the --transport option has taken effect from within the
- # test_transport test
+ # Test that we can pass a transport to the selftest core - memory
+ # version.
import bzrlib.transport.memory
- if TestOptions.current_test != "test_transport_set_to_memory":
- return
+ params = self.get_params_passed_to_core('selftest --transport=memory')
self.assertEqual(bzrlib.transport.memory.MemoryServer,
- bzrlib.tests.default_transport)
-
- def test_transport(self):
- # test that --transport=sftp works
- try:
- import bzrlib.transport.sftp
- except ParamikoNotPresent:
- raise TestSkipped("Paramiko not present")
- old_transport = bzrlib.tests.default_transport
- old_root = TestCaseWithMemoryTransport.TEST_ROOT
- TestCaseWithMemoryTransport.TEST_ROOT = None
- try:
- TestOptions.current_test = "test_transport_set_to_sftp"
- stdout = self.run_bzr(
- 'selftest --transport=sftp test_transport_set_to_sftp')[0]
- self.assertContainsRe(stdout, 'Ran 1 test')
- self.assertEqual(old_transport, bzrlib.tests.default_transport)
-
- TestOptions.current_test = "test_transport_set_to_memory"
- stdout = self.run_bzr(
- 'selftest --transport=memory test_transport_set_to_memory')[0]
- self.assertContainsRe(stdout, 'Ran 1 test')
- self.assertEqual(old_transport, bzrlib.tests.default_transport)
+ params[1]["transport"])
+
+ def get_params_passed_to_core(self, cmdline):
+ params = []
+ def selftest(*args, **kwargs):
+ """Capture the arguments selftest was run with."""
+ params.append((args, kwargs))
+ return True
+ # Yes this prevents using threads to run the test suite in parallel,
+ # however we don't have a clean dependency injector for commands,
+ # and even if we did - we'd still be testing that the glue is wired
+ # up correctly. XXX: TODO: Solve this testing problem.
+ original_selftest = tests.selftest
+ tests.selftest = selftest
+ try:
+ self.run_bzr(cmdline)
+ return params[0]
finally:
- bzrlib.tests.default_transport = old_transport
- TestOptions.current_test = None
- TestCaseWithMemoryTransport.TEST_ROOT = old_root
+ tests.selftest = original_selftest
+
+ def test_parameters_passed_to_core(self):
+ params = self.get_params_passed_to_core('selftest --list-only')
+ self.assertTrue("list_only" in params[1])
+ params = self.get_params_passed_to_core('selftest --list-only selftest')
+ self.assertTrue("list_only" in params[1])
+ params = self.get_params_passed_to_core(['selftest', '--list-only',
+ '--exclude', 'selftest'])
+ self.assertTrue("list_only" in params[1])
+ params = self.get_params_passed_to_core(['selftest', '--list-only',
+ 'selftest', '--randomize', 'now'])
+ self.assertSubset(["list_only", "random_seed"], params[1])
def test_subunit(self):
"""Passing --subunit results in subunit output."""
@@ -537,32 +537,6 @@
finally:
tests.selftest = original_selftest
- def test_parameters_passed_to_core(self):
- params = []
- def selftest(*args, **kwargs):
- """Capture the arguments selftest was run with."""
- params.append((args, kwargs))
- return True
- # Yes this prevents using threads to run the test suite in parallel,
- # however we don't have a clean dependency injector for commands,
- # and even if we did - we'd still be testing that the glue is wired
- # up correctly. XXX: TODO: Solve this testing problem.
- original_selftest = tests.selftest
- tests.selftest = selftest
- try:
- self.run_bzr('selftest --list-only')
- self.run_bzr('selftest --list-only selftest')
- self.run_bzr(['selftest', '--list-only', '--exclude', 'selftest'])
- self.run_bzr(['selftest', '--list-only', 'selftest',
- '--randomize', 'now'])
- # list_only should have been passed in each invocation.
- self.assertTrue("list_only" in params[0][1])
- self.assertTrue("list_only" in params[1][1])
- self.assertTrue("list_only" in params[2][1])
- self.assertSubset(["list_only", "random_seed"], params[2][1])
- finally:
- tests.selftest = original_selftest
-
class TestSelftestWithIdList(TestCaseInTempDir):
=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py 2009-08-23 22:15:51 +0000
+++ b/bzrlib/tests/test_selftest.py 2009-08-23 23:20:33 +0000
@@ -1784,7 +1784,14 @@
def run_selftest(self, **kwargs):
"""Run selftest returning its output."""
output = StringIO()
- self.assertEqual(True, tests.selftest(stream=output, **kwargs))
+ old_transport = bzrlib.tests.default_transport
+ old_root = tests.TestCaseWithMemoryTransport.TEST_ROOT
+ tests.TestCaseWithMemoryTransport.TEST_ROOT = None
+ try:
+ self.assertEqual(True, tests.selftest(stream=output, **kwargs))
+ finally:
+ bzrlib.tests.default_transport = old_transport
+ tests.TestCaseWithMemoryTransport.TEST_ROOT = old_root
output.seek(0)
return output
@@ -1824,6 +1831,28 @@
list_only=True, random_seed="123")
self.assertEqual(expected.getvalue(), repeated.getvalue())
+ def check_transport_set(self, transport_server):
+ captured_transport = []
+ def seen_transport(a_transport):
+ captured_transport.append(a_transport)
+ class Capture(tests.TestCase):
+ def a(self):
+ seen_transport(bzrlib.tests.default_transport)
+ def factory():
+ return TestUtil.TestSuite([Capture("a")])
+ self.run_selftest(transport=transport_server, test_suite_factory=factory)
+ self.assertEqual(transport_server, captured_transport[0])
+
+ def test_transport_sftp(self):
+ try:
+ import bzrlib.transport.sftp
+ except ParamikoNotPresent:
+ raise TestSkipped("Paramiko not present")
+ self.check_transport_set(bzrlib.transport.sftp.SFTPAbsoluteServer)
+
+ def test_transport_memory(self):
+ self.check_transport_set(bzrlib.transport.memory.MemoryServer)
+
class TestKnownFailure(tests.TestCase):
More information about the bazaar-commits
mailing list