diff --git a/tests/testsuite.py b/tests/testsuite.py index b208c30..212a220 100755 --- a/tests/testsuite.py +++ b/tests/testsuite.py @@ -185,8 +185,9 @@ def setUp(self): self.runner_kwargs = {} self.addCleanup(rmtree, self.outdir) - def _test_xmlrunner(self, suite, runner=None): - outdir = self.outdir + def _test_xmlrunner(self, suite, runner=None, outdir=None): + if outdir is None: + outdir = self.outdir stream = self.stream verbosity = self.verbosity runner_kwargs = self.runner_kwargs @@ -194,9 +195,15 @@ def _test_xmlrunner(self, suite, runner=None): runner = xmlrunner.XMLTestRunner( stream=stream, output=outdir, verbosity=verbosity, **runner_kwargs) - self.assertEqual(0, len(glob(os.path.join(outdir, '*xml')))) + if isinstance(outdir, BytesIO): + self.assertFalse(outdir.getvalue()) + else: + self.assertEqual(0, len(glob(os.path.join(outdir, '*xml')))) runner.run(suite) - self.assertEqual(1, len(glob(os.path.join(outdir, '*xml')))) + if isinstance(outdir, BytesIO): + self.assertTrue(outdir.getvalue()) + else: + self.assertEqual(1, len(glob(os.path.join(outdir, '*xml')))) return runner def test_basic_unittest_constructs(self): @@ -230,6 +237,42 @@ def test_classnames(self): r'classname="tests\.testsuite\.(XMLTestRunnerTestCase\.)?' r'DummySubTest" name="test_subTest_pass"'.encode('utf8')) + def test_expected_failure(self): + suite = unittest.TestSuite() + suite.addTest(self.DummyTest('test_expected_failure')) + outdir = BytesIO() + + self._test_xmlrunner(suite, outdir=outdir) + + self.assertNotIn(b'