Rev 4654: Make tests for finish_bzr_subprocess that really only care about the interface use StubProcess. in http://bazaar.launchpad.net/~lifeless/bzr/test-speed
Robert Collins
robertc at robertcollins.net
Wed Aug 26 07:33:18 BST 2009
At http://bazaar.launchpad.net/~lifeless/bzr/test-speed
------------------------------------------------------------
revno: 4654
revision-id: robertc at robertcollins.net-20090826063313-03jc5xen4lk6at8q
parent: robertc at robertcollins.net-20090826062508-0w767n53xbceq88h
committer: Robert Collins <robertc at robertcollins.net>
branch nick: test-speed
timestamp: Wed 2009-08-26 16:33:13 +1000
message:
Make tests for finish_bzr_subprocess that really only care about the interface use StubProcess.
=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py 2009-08-26 06:25:08 +0000
+++ b/bzrlib/tests/test_selftest.py 2009-08-26 06:33:13 +0000
@@ -2117,7 +2117,8 @@
return self.out, self.err
-class TestRunBzrSubprocess(tests.TestCaseWithTransport):
+class TestWithFakedStartBzrSubprocess(tests.TestCaseWithTransport):
+ """Base class for tests testing how we might run bzr."""
def setUp(self):
tests.TestCaseWithTransport.setUp(self)
@@ -2134,6 +2135,9 @@
'working_dir':working_dir, 'allow_plugins':allow_plugins})
return self.next_subprocess
+
+class TestRunBzrSubprocess(TestWithFakedStartBzrSubprocess):
+
def assertRunBzrSubprocess(self, expected_args, process, *args, **kwargs):
"""Run run_bzr_subprocess with args and kwargs using a stubbed process.
@@ -2202,6 +2206,32 @@
StubProcess(), '', allow_plugins=True)
+class TestFinishBzrSubprocess(TestWithFakedStartBzrSubprocess):
+
+ def test_finish_bzr_subprocess_with_error(self):
+ """finish_bzr_subprocess allows specification of the desired exit code.
+ """
+ process = StubProcess(err="unknown command", retcode=3)
+ result = self.finish_bzr_subprocess(process, retcode=3)
+ self.assertEqual('', result[0])
+ self.assertContainsRe(result[1], 'unknown command')
+
+ def test_finish_bzr_subprocess_ignoring_retcode(self):
+ """finish_bzr_subprocess allows the exit code to be ignored."""
+ process = StubProcess(err="unknown command", retcode=3)
+ result = self.finish_bzr_subprocess(process, retcode=None)
+ self.assertEqual('', result[0])
+ self.assertContainsRe(result[1], 'unknown command')
+
+ def test_finish_subprocess_with_unexpected_retcode(self):
+ """finish_bzr_subprocess raises self.failureException if the retcode is
+ not the expected one.
+ """
+ process = StubProcess(err="unknown command", retcode=3)
+ self.assertRaises(self.failureException, self.finish_bzr_subprocess,
+ process)
+
+
class _DontSpawnProcess(Exception):
"""A simple exception which just allows us to skip unnecessary steps"""
@@ -2285,39 +2315,8 @@
self.assertEqual(['foo', 'current'], chdirs)
-class TestBzrSubprocess(tests.TestCaseWithTransport):
-
- def test_start_and_stop_bzr_subprocess(self):
- """We can start and perform other test actions while that process is
- still alive.
- """
- process = self.start_bzr_subprocess(['--version'])
- result = self.finish_bzr_subprocess(process)
- self.assertContainsRe(result[0], 'is free software')
- self.assertEqual('', result[1])
-
- def test_start_and_stop_bzr_subprocess_with_error(self):
- """finish_bzr_subprocess allows specification of the desired exit code.
- """
- process = self.start_bzr_subprocess(['--versionn'])
- result = self.finish_bzr_subprocess(process, retcode=3)
- self.assertEqual('', result[0])
- self.assertContainsRe(result[1], 'unknown command')
-
- def test_start_and_stop_bzr_subprocess_ignoring_retcode(self):
- """finish_bzr_subprocess allows the exit code to be ignored."""
- process = self.start_bzr_subprocess(['--versionn'])
- result = self.finish_bzr_subprocess(process, retcode=None)
- self.assertEqual('', result[0])
- self.assertContainsRe(result[1], 'unknown command')
-
- def test_start_and_stop_bzr_subprocess_with_unexpected_retcode(self):
- """finish_bzr_subprocess raises self.failureException if the retcode is
- not the expected one.
- """
- process = self.start_bzr_subprocess(['--versionn'])
- self.assertRaises(self.failureException, self.finish_bzr_subprocess,
- process)
+class TestActuallyStartBzrSubprocess(tests.TestCaseWithTransport):
+ """Tests that really need to do things with an external bzr."""
def test_start_and_stop_bzr_subprocess_send_signal(self):
"""finish_bzr_subprocess raises self.failureException if the retcode is
More information about the bazaar-commits
mailing list