summaryrefslogtreecommitdiff
path: root/testrepository/tests/commands/test_run.py
diff options
context:
space:
mode:
authorRobert Collins <robertc@robertcollins.net>2013-11-04 09:02:01 +1300
committerRobert Collins <robertc@robertcollins.net>2013-11-04 09:02:01 +1300
commit099e622dc5559cced775e9694deec6c798f590f3 (patch)
tree33c4b5773e5699d5703fbb96c288096969cb1634 /testrepository/tests/commands/test_run.py
parent2b86d6ae04620c09b47d29a1aed65888ac2e6e81 (diff)
downloadtestrepository-099e622dc5559cced775e9694deec6c798f590f3.tar.gz
* ``run`` now accepts ``--isolated`` as a parameter, which will cause each
selected test to be run independently. This can be useful to both workaround isolation bugs and detect tests that can not be run independently. (Robert Collins)
Diffstat (limited to 'testrepository/tests/commands/test_run.py')
-rw-r--r--testrepository/tests/commands/test_run.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/testrepository/tests/commands/test_run.py b/testrepository/tests/commands/test_run.py
index 3168e94..da94ca2 100644
--- a/testrepository/tests/commands/test_run.py
+++ b/testrepository/tests/commands/test_run.py
@@ -446,6 +446,35 @@ class TestCommand(ResourcedTestCase):
], ui.outputs)
self.assertEqual(0, result)
+ def test_isolated_runs_multiple_processes(self):
+ ui, cmd = self.get_test_ui_and_cmd(options=[('isolated', True)])
+ cmd.repository_factory = memory.RepositoryFactory()
+ self.setup_repo(cmd, ui)
+ self.set_config(
+ '[DEFAULT]\ntest_command=foo $IDLIST $LISTOPT\n'
+ 'test_id_option=--load-list $IDFILE\n'
+ 'test_list_option=--list\n')
+ params, capture_ids = self.capture_ids(list_result=['ab', 'cd', 'ef'])
+ self.useFixture(MonkeyPatch(
+ 'testrepository.testcommand.TestCommand.get_run_command',
+ capture_ids))
+ cmd_result = cmd.execute()
+ self.assertEqual([
+ ('results', Wildcard),
+ ('summary', True, 0, -3, None, None, [('id', 1, None)]),
+ ('results', Wildcard),
+ ('summary', True, 0, 0, None, None, [('id', 2, None)]),
+ ('results', Wildcard),
+ ('summary', True, 0, 0, None, None, [('id', 3, None)]),
+ ], ui.outputs)
+ self.assertEqual(0, cmd_result)
+ # once to list, then 3 each executing one test.
+ self.assertThat(params, HasLength(4))
+ self.assertThat(params[0][1], Equals(None))
+ self.assertThat(params[1][1], Equals(['ab']))
+ self.assertThat(params[2][1], Equals(['cd']))
+ self.assertThat(params[3][1], Equals(['ef']))
+
def read_all(stream):
return stream.read()