diff options
Diffstat (limited to 'tests/functional/i/invalid/invalid_exceptions_raised.py')
-rw-r--r-- | tests/functional/i/invalid/invalid_exceptions_raised.py | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/tests/functional/i/invalid/invalid_exceptions_raised.py b/tests/functional/i/invalid/invalid_exceptions_raised.py new file mode 100644 index 000000000..34f740de4 --- /dev/null +++ b/tests/functional/i/invalid/invalid_exceptions_raised.py @@ -0,0 +1,105 @@ +# pylint:disable=too-few-public-methods,no-init,import-error,missing-docstring, not-callable, useless-object-inheritance,import-outside-toplevel +"""test pb with exceptions and old/new style classes""" + + +class ValidException(Exception): + """Valid Exception.""" + +class OldStyleClass: + """Not an exception.""" + +class NewStyleClass(object): + """Not an exception.""" + + +def good_case(): + """raise""" + raise ValidException('hop') + +def good_case1(): + """zlib.error is defined in C module.""" + import zlib + raise zlib.error(4) + +def good_case2(): + """decimal.DivisionByZero is defined in C on Python 3.""" + import decimal + raise decimal.DivisionByZero(4) + +def good_case3(): + """io.BlockingIOError is defined in C.""" + import io + raise io.BlockingIOError + +def bad_case0(): + """raise""" + # +2:<3.0:[nonstandard-exception] + # +1:>=3.0:[raising-non-exception] + raise OldStyleClass('hop') + +def bad_case1(): + """raise""" + raise NewStyleClass() # [raising-non-exception] + +def bad_case2(): + """raise""" + # +2:<3.0:[nonstandard-exception] + # +1:>=3.0:[raising-non-exception] + raise OldStyleClass('hop') + +def bad_case3(): + """raise""" + raise NewStyleClass # [raising-non-exception] + +def bad_case4(): + """raise""" + raise NotImplemented('hop') # [notimplemented-raised] + +def bad_case5(): + """raise""" + raise 1 # [raising-bad-type] + +def bad_case6(): + """raise""" + raise None # [raising-bad-type] + +def bad_case7(): + """raise list""" + raise list # [raising-non-exception] + +def bad_case8(): + """raise tuple""" + raise tuple # [raising-non-exception] + +def bad_case9(): + """raise dict""" + raise dict # [raising-non-exception] + +def unknown_bases(): + """Don't emit when we don't know the bases.""" + from lala import bala # pylint: disable=import-outside-toplevel + class MyException(bala): + pass + raise MyException + + +def exception_instance_regression(): + """Exceptions have a particular class type""" + try: + int("9a") + except ValueError as exc: + raise exc + + +def reusing_same_name_picks_the_latest_raised_value(): + class Error(Exception): + """some error""" + + exceptions = tuple([ValueError, TypeError]) + try: + raise ValueError + except exceptions as exc: # pylint: disable=catching-non-exception + # https://github.com/PyCQA/pylint/issues/1756 + exc = Error(exc) + if exc: + raise exc |