mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
gh-136442: Fix unittest to return exit code 5 when setUpClass raises an exception (#136487)
This commit is contained in:
parent
453d886f85
commit
53d65c840e
3 changed files with 26 additions and 5 deletions
|
|
@ -75,6 +75,14 @@ class Test_TestProgram(unittest.TestCase):
|
|||
class Empty(unittest.TestCase):
|
||||
pass
|
||||
|
||||
class SetUpClassFailure(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
raise Exception
|
||||
def testPass(self):
|
||||
pass
|
||||
|
||||
class TestLoader(unittest.TestLoader):
|
||||
"""Test loader that returns a suite containing the supplied testcase."""
|
||||
|
||||
|
|
@ -191,6 +199,18 @@ class Test_TestProgram(unittest.TestCase):
|
|||
out = stream.getvalue()
|
||||
self.assertIn('\nNO TESTS RAN\n', out)
|
||||
|
||||
def test_ExitSetUpClassFailureSuite(self):
|
||||
stream = BufferedWriter()
|
||||
with self.assertRaises(SystemExit) as cm:
|
||||
unittest.main(
|
||||
argv=["setup_class_failure"],
|
||||
testRunner=unittest.TextTestRunner(stream=stream),
|
||||
testLoader=self.TestLoader(self.SetUpClassFailure))
|
||||
self.assertEqual(cm.exception.code, 1)
|
||||
out = stream.getvalue()
|
||||
self.assertIn("ERROR: setUpClass", out)
|
||||
self.assertIn("SetUpClassFailure", out)
|
||||
|
||||
|
||||
class InitialisableProgram(unittest.TestProgram):
|
||||
exit = False
|
||||
|
|
|
|||
|
|
@ -269,12 +269,12 @@ class TestProgram(object):
|
|||
testRunner = self.testRunner
|
||||
self.result = testRunner.run(self.test)
|
||||
if self.exit:
|
||||
if self.result.testsRun == 0 and len(self.result.skipped) == 0:
|
||||
sys.exit(_NO_TESTS_EXITCODE)
|
||||
elif self.result.wasSuccessful():
|
||||
sys.exit(0)
|
||||
else:
|
||||
if not self.result.wasSuccessful():
|
||||
sys.exit(1)
|
||||
elif self.result.testsRun == 0 and len(self.result.skipped) == 0:
|
||||
sys.exit(_NO_TESTS_EXITCODE)
|
||||
else:
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
main = TestProgram
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
Use exitcode ``1`` instead of ``5`` if :func:`unittest.TestCase.setUpClass` raises an exception
|
||||
Loading…
Add table
Add a link
Reference in a new issue