Skip to content

Commit 7c4d6a2

Browse files
committed
properly include expected failures & unexpected successes in output
1 parent b3b8fc2 commit 7c4d6a2

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

tests/testsuite.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,42 @@ def test_classnames(self):
237237
r'classname="tests\.testsuite\.(XMLTestRunnerTestCase\.)?'
238238
r'DummySubTest" name="test_subTest_pass"'.encode('utf8'))
239239

240+
def test_expected_failure(self):
241+
suite = unittest.TestSuite()
242+
suite.addTest(self.DummyTest('test_expected_failure'))
243+
outdir = BytesIO()
244+
245+
self._test_xmlrunner(suite, outdir=outdir)
246+
247+
self.assertNotIn(b'<failure', outdir.getvalue())
248+
self.assertNotIn(b'<error', outdir.getvalue())
249+
self.assertIn(b'<skip', outdir.getvalue())
250+
251+
def test_unexpected_success(self):
252+
suite = unittest.TestSuite()
253+
suite.addTest(self.DummyTest('test_unexpected_success'))
254+
outdir = BytesIO()
255+
256+
self._test_xmlrunner(suite, outdir=outdir)
257+
258+
self.assertNotIn(b'<failure', outdir.getvalue())
259+
self.assertIn(b'<error', outdir.getvalue())
260+
self.assertNotIn(b'<skip', outdir.getvalue())
261+
262+
def test_xmlrunner_safe_xml_encoding_name(self):
263+
suite = unittest.TestSuite()
264+
suite.addTest(self.DummyTest('test_pass'))
265+
outdir = BytesIO()
266+
runner = xmlrunner.XMLTestRunner(
267+
stream=self.stream, output=outdir, verbosity=self.verbosity,
268+
**self.runner_kwargs)
269+
runner.run(suite)
270+
outdir.seek(0)
271+
output = outdir.read()
272+
firstline = output.splitlines()[0]
273+
# test for issue #74
274+
self.assertIn('encoding="UTF-8"'.encode('utf8'), firstline)
275+
240276
def test_xmlrunner_non_ascii(self):
241277
suite = unittest.TestSuite()
242278
suite.addTest(self.DummyTest('test_non_ascii_skip'))

xmlrunner/result.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ def addExpectedFailure(self, test, err):
391391
"""
392392
self._save_output_data()
393393

394-
testinfo = self.infoclass(self, test, self.infoclass.ERROR, err)
394+
testinfo = self.infoclass(self, test, self.infoclass.SKIP, err)
395395
testinfo.test_exception_name = 'XFAIL'
396396
testinfo.test_exception_message = 'expected failure: {}'.format(testinfo.test_exception_message)
397397

0 commit comments

Comments
 (0)