diff options
author | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-12-19 14:53:19 (GMT) |
---|---|---|
committer | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-12-19 14:53:19 (GMT) |
commit | a17f076f614222cec6ff415c940717ecbbddd9fe (patch) | |
tree | 4efd1476bda09dfe0a3fbf9120bd9f953451c2b0 /Lib/unittest/test | |
parent | 5657ff8aa0aa9d53f92fc11cc2d4b7e23f5cb95a (diff) | |
download | cpython-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.py | 52 |
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() |