blob: 34f740de4c9df03c51f7201d122eabc5049fc6e4 [file] [log] [blame]
# 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