diff options
author | Collin Winter <collinw@gmail.com> | 2007-08-31 00:04:24 (GMT) |
---|---|---|
committer | Collin Winter <collinw@gmail.com> | 2007-08-31 00:04:24 (GMT) |
commit | 828f04ac3f0dd3b68b4dbf42a79ebb846d1de568 (patch) | |
tree | 21e25d3d969ce636c32539e4d4b5255dc4c85702 /Lib/test/test_raise.py | |
parent | 150b7d7d02eca6970d792f3e6887f957a36b6ca2 (diff) | |
download | cpython-828f04ac3f0dd3b68b4dbf42a79ebb846d1de568.zip cpython-828f04ac3f0dd3b68b4dbf42a79ebb846d1de568.tar.gz cpython-828f04ac3f0dd3b68b4dbf42a79ebb846d1de568.tar.bz2 |
Issue #1066: implement PEP 3109, 2/3 of PEP 3134.
Diffstat (limited to 'Lib/test/test_raise.py')
-rw-r--r-- | Lib/test/test_raise.py | 417 |
1 files changed, 417 insertions, 0 deletions
diff --git a/Lib/test/test_raise.py b/Lib/test/test_raise.py new file mode 100644 index 0000000..ac0a32b --- /dev/null +++ b/Lib/test/test_raise.py @@ -0,0 +1,417 @@ +# Copyright 2007 Google, Inc. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. + +"""Tests for the raise statement.""" + +from test import test_support +import sys +import types +import unittest + + +def get_tb(): + try: + raise OSError() + except: + return sys.exc_info()[2] + + +class TestRaise(unittest.TestCase): + def test_invalid_reraise(self): + try: + raise + except RuntimeError as e: + self.failUnless("No active exception" in str(e)) + else: + self.fail("No exception raised") + + def test_reraise(self): + try: + try: + raise IndexError() + except IndexError as e: + exc1 = e + raise + except IndexError as exc2: + self.failUnless(exc1 is exc2) + else: + self.fail("No exception raised") + + +class TestCause(unittest.TestCase): + def test_invalid_cause(self): + try: + raise IndexError from 5 + except TypeError as e: + self.failUnless("exception cause" in str(e)) + else: + self.fail("No exception raised") + + def test_class_cause(self): + try: + raise IndexError from KeyError + except IndexError as e: + self.failUnless(isinstance(e.__cause__, KeyError)) + else: + self.fail("No exception raised") + + def test_instance_cause(self): + cause = KeyError() + try: + raise IndexError from cause + except IndexError as e: + self.failUnless(e.__cause__ is cause) + else: + self.fail("No exception raised") + + +class TestTraceback(unittest.TestCase): + def test_sets_traceback(self): + try: + raise IndexError() + except IndexError as e: + self.failUnless(isinstance(e.__traceback__, types.TracebackType)) + else: + self.fail("No exception raised") + + def test_accepts_traceback(self): + tb = get_tb() + try: + raise IndexError().with_traceback(tb) + except IndexError as e: + self.assertNotEqual(e.__traceback__, tb) + self.assertEqual(e.__traceback__.tb_next, tb) + else: + self.fail("No exception raised") + + +# Disabled until context is implemented +# class TestContext(object): +# def test_instance_context_bare_raise(self): +# context = IndexError() +# try: +# try: +# raise context +# except: +# raise OSError() +# except OSError as e: +# self.assertEqual(e.__context__, context) +# else: +# self.fail("No exception raised") +# +# def test_class_context_bare_raise(self): +# context = IndexError +# try: +# try: +# raise context +# except: +# raise OSError() +# except OSError as e: +# self.assertNotEqual(e.__context__, context) +# self.failUnless(isinstance(e.__context__, context)) +# else: +# self.fail("No exception raised") + + +class TestRemovedFunctionality(unittest.TestCase): + def test_tuples(self): + try: + raise (IndexError, KeyError) # This should be a tuple! + except TypeError: + pass + else: + self.fail("No exception raised") + + def test_strings(self): + try: + raise "foo" + except TypeError: + pass + else: + self.fail("No exception raised") + + +def test_main(): + test_support.run_unittest(__name__) + + +if __name__ == "__main__": + unittest.main() +# Copyright 2007 Google, Inc. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. + +"""Tests for the raise statement.""" + +from test import test_support +import sys +import types +import unittest + + +def get_tb(): + try: + raise OSError() + except: + return sys.exc_info()[2] + + +class TestRaise(unittest.TestCase): + def test_invalid_reraise(self): + try: + raise + except RuntimeError as e: + self.failUnless("No active exception" in str(e)) + else: + self.fail("No exception raised") + + def test_reraise(self): + try: + try: + raise IndexError() + except IndexError as e: + exc1 = e + raise + except IndexError as exc2: + self.failUnless(exc1 is exc2) + else: + self.fail("No exception raised") + + +class TestCause(unittest.TestCase): + def test_invalid_cause(self): + try: + raise IndexError from 5 + except TypeError as e: + self.failUnless("exception cause" in str(e)) + else: + self.fail("No exception raised") + + def test_class_cause(self): + try: + raise IndexError from KeyError + except IndexError as e: + self.failUnless(isinstance(e.__cause__, KeyError)) + else: + self.fail("No exception raised") + + def test_instance_cause(self): + cause = KeyError() + try: + raise IndexError from cause + except IndexError as e: + self.failUnless(e.__cause__ is cause) + else: + self.fail("No exception raised") + + +class TestTraceback(unittest.TestCase): + def test_sets_traceback(self): + try: + raise IndexError() + except IndexError as e: + self.failUnless(isinstance(e.__traceback__, types.TracebackType)) + else: + self.fail("No exception raised") + + def test_accepts_traceback(self): + tb = get_tb() + try: + raise IndexError().with_traceback(tb) + except IndexError as e: + self.assertNotEqual(e.__traceback__, tb) + self.assertEqual(e.__traceback__.tb_next, tb) + else: + self.fail("No exception raised") + + +# Disabled until context is implemented +# class TestContext(object): +# def test_instance_context_bare_raise(self): +# context = IndexError() +# try: +# try: +# raise context +# except: +# raise OSError() +# except OSError as e: +# self.assertEqual(e.__context__, context) +# else: +# self.fail("No exception raised") +# +# def test_class_context_bare_raise(self): +# context = IndexError +# try: +# try: +# raise context +# except: +# raise OSError() +# except OSError as e: +# self.assertNotEqual(e.__context__, context) +# self.failUnless(isinstance(e.__context__, context)) +# else: +# self.fail("No exception raised") + + +class TestRemovedFunctionality(unittest.TestCase): + def test_tuples(self): + try: + raise (IndexError, KeyError) # This should be a tuple! + except TypeError: + pass + else: + self.fail("No exception raised") + + def test_strings(self): + try: + raise "foo" + except TypeError: + pass + else: + self.fail("No exception raised") + + +def test_main(): + test_support.run_unittest(__name__) + + +if __name__ == "__main__": + unittest.main() +# Copyright 2007 Google, Inc. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. + +"""Tests for the raise statement.""" + +from test import test_support +import sys +import types +import unittest + + +def get_tb(): + try: + raise OSError() + except: + return sys.exc_info()[2] + + +class TestRaise(unittest.TestCase): + def test_invalid_reraise(self): + try: + raise + except RuntimeError as e: + self.failUnless("No active exception" in str(e)) + else: + self.fail("No exception raised") + + def test_reraise(self): + try: + try: + raise IndexError() + except IndexError as e: + exc1 = e + raise + except IndexError as exc2: + self.failUnless(exc1 is exc2) + else: + self.fail("No exception raised") + + +class TestCause(unittest.TestCase): + def test_invalid_cause(self): + try: + raise IndexError from 5 + except TypeError as e: + self.failUnless("exception cause" in str(e)) + else: + self.fail("No exception raised") + + def test_class_cause(self): + try: + raise IndexError from KeyError + except IndexError as e: + self.failUnless(isinstance(e.__cause__, KeyError)) + else: + self.fail("No exception raised") + + def test_instance_cause(self): + cause = KeyError() + try: + raise IndexError from cause + except IndexError as e: + self.failUnless(e.__cause__ is cause) + else: + self.fail("No exception raised") + + +class TestTraceback(unittest.TestCase): + def test_sets_traceback(self): + try: + raise IndexError() + except IndexError as e: + self.failUnless(isinstance(e.__traceback__, types.TracebackType)) + else: + self.fail("No exception raised") + + def test_accepts_traceback(self): + tb = get_tb() + try: + raise IndexError().with_traceback(tb) + except IndexError as e: + self.assertNotEqual(e.__traceback__, tb) + self.assertEqual(e.__traceback__.tb_next, tb) + else: + self.fail("No exception raised") + + +# Disabled until context is implemented +# class TestContext(object): +# def test_instance_context_bare_raise(self): +# context = IndexError() +# try: +# try: +# raise context +# except: +# raise OSError() +# except OSError as e: +# self.assertEqual(e.__context__, context) +# else: +# self.fail("No exception raised") +# +# def test_class_context_bare_raise(self): +# context = IndexError +# try: +# try: +# raise context +# except: +# raise OSError() +# except OSError as e: +# self.assertNotEqual(e.__context__, context) +# self.failUnless(isinstance(e.__context__, context)) +# else: +# self.fail("No exception raised") + + +class TestRemovedFunctionality(unittest.TestCase): + def test_tuples(self): + try: + raise (IndexError, KeyError) # This should be a tuple! + except TypeError: + pass + else: + self.fail("No exception raised") + + def test_strings(self): + try: + raise "foo" + except TypeError: + pass + else: + self.fail("No exception raised") + + +def test_main(): + test_support.run_unittest(__name__) + + +if __name__ == "__main__": + unittest.main() |