summaryrefslogtreecommitdiffstats
path: root/Lib/unittest/test
diff options
context:
space:
mode:
authorMichael Foord <fuzzyman@voidspace.org.uk>2010-12-19 14:53:19 (GMT)
committerMichael Foord <fuzzyman@voidspace.org.uk>2010-12-19 14:53:19 (GMT)
commita17f076f614222cec6ff415c940717ecbbddd9fe (patch)
tree4efd1476bda09dfe0a3fbf9120bd9f953451c2b0 /Lib/unittest/test
parent5657ff8aa0aa9d53f92fc11cc2d4b7e23f5cb95a (diff)
downloadcpython-a17f076f614222cec6ff415c940717ecbbddd9fe.zip
cpython-a17f076f614222cec6ff415c940717ecbbddd9fe.tar.gz
cpython-a17f076f614222cec6ff415c940717ecbbddd9fe.tar.bz2
Issue 10611. SystemExit should not cause a unittest test run to exit.
Diffstat (limited to 'Lib/unittest/test')
-rw-r--r--Lib/unittest/test/test_case.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/Lib/unittest/test/test_case.py b/Lib/unittest/test/test_case.py
index 4e9dfc6..c42d98d 100644
--- a/Lib/unittest/test/test_case.py
+++ b/Lib/unittest/test/test_case.py
@@ -999,6 +999,58 @@ test case
# This shouldn't blow up
deepcopy(test)
+ def testKeyboardInterrupt(self):
+ def _raise(self=None):
+ raise KeyboardInterrupt
+ def nothing(self):
+ pass
+
+ class Test1(unittest.TestCase):
+ test_something = _raise
+
+ class Test2(unittest.TestCase):
+ setUp = _raise
+ test_something = nothing
+
+ class Test3(unittest.TestCase):
+ test_something = nothing
+ tearDown = _raise
+
+ class Test4(unittest.TestCase):
+ def test_something(self):
+ self.addCleanup(_raise)
+
+ for klass in (Test1, Test2, Test3, Test4):
+ with self.assertRaises(KeyboardInterrupt):
+ klass('test_something').run()
+
+ def testSystemExit(self):
+ def _raise(self=None):
+ raise SystemExit
+ def nothing(self):
+ pass
+
+ class Test1(unittest.TestCase):
+ test_something = _raise
+
+ class Test2(unittest.TestCase):
+ setUp = _raise
+ test_something = nothing
+
+ class Test3(unittest.TestCase):
+ test_something = nothing
+ tearDown = _raise
+
+ class Test4(unittest.TestCase):
+ def test_something(self):
+ self.addCleanup(_raise)
+
+ for klass in (Test1, Test2, Test3, Test4):
+ result = unittest.TestResult()
+ klass('test_something').run(result)
+ self.assertEqual(len(result.errors), 1)
+ self.assertEqual(result.testsRun, 1)
+
if __name__ == '__main__':
unittest.main()