diff options
| author | Robert Collins <robertc@robertcollins.net> | 2014-11-18 21:57:57 +1300 |
|---|---|---|
| committer | Robert Collins <robertc@robertcollins.net> | 2014-11-18 21:57:57 +1300 |
| commit | a129fa2ff6d0f623f9b99f036a6d9b4174d972ce (patch) | |
| tree | 0830c5dd026ff896c02a0b5f71bdd1505176e81e /python | |
| parent | 7c203ff76e7ab83d954cfd6ea1cb4d75f9881823 (diff) | |
| download | subunit-git-a129fa2ff6d0f623f9b99f036a6d9b4174d972ce.tar.gz | |
Improve showing of import errors in the Python runner.
This depends on testtools 1.4.0 to get the improved behaviour.
Diffstat (limited to 'python')
| -rwxr-xr-x | python/subunit/run.py | 6 | ||||
| -rw-r--r-- | python/subunit/tests/test_run.py | 12 |
2 files changed, 17 insertions, 1 deletions
diff --git a/python/subunit/run.py b/python/subunit/run.py index cf9cc01..5bf1db2 100755 --- a/python/subunit/run.py +++ b/python/subunit/run.py @@ -70,9 +70,13 @@ class SubunitTestRunner(object): result.stopTestRun() return result - def list(self, test): + def list(self, test, loader=None): "List the test." result, errors = self._list(test) + if loader is not None: + # We were called with the updated API by testtools.run, so look for + # errors on the loader, not the test list result. + errors = loader.errors if errors: failed_descr = '\n'.join(errors).encode('utf8') result.status(file_name="import errors", runnable=False, diff --git a/python/subunit/tests/test_run.py b/python/subunit/tests/test_run.py index de9b094..3339a82 100644 --- a/python/subunit/tests/test_run.py +++ b/python/subunit/tests/test_run.py @@ -65,6 +65,18 @@ class TestSubunitTestRunner(TestCase): exc = self.assertRaises(SystemExit, runner.list, None) self.assertEqual((2,), exc.args) + def test_list_includes_loader_errors(self): + bytestream = io.BytesIO() + runner = SubunitTestRunner(stream=bytestream) + def list_test(test): + return [], [] + class Loader(object): + errors = ['failed import'] + loader = Loader() + self.patch(run, 'list_test', list_test) + exc = self.assertRaises(SystemExit, runner.list, None, loader=loader) + self.assertEqual((2,), exc.args) + class FailingTest(TestCase): def test_fail(self): 1/0 |
