diff options
author | Ashley Whetter <ashley@awhetter.co.uk> | 2019-06-14 22:28:42 -0700 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2019-06-20 10:02:14 +0200 |
commit | 33b8185a455c1686d038258697bb93005f2441c2 (patch) | |
tree | 4a50ccac775c009436e45803129e428ed694065f /tests/extensions/test_overlapping_exceptions.py | |
parent | 7081d91f30728653000bdfc59ea85a3395f96418 (diff) | |
download | pylint-git-33b8185a455c1686d038258697bb93005f2441c2.tar.gz |
Stopped installing tests with package
Diffstat (limited to 'tests/extensions/test_overlapping_exceptions.py')
-rw-r--r-- | tests/extensions/test_overlapping_exceptions.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/extensions/test_overlapping_exceptions.py b/tests/extensions/test_overlapping_exceptions.py new file mode 100644 index 000000000..d001b2053 --- /dev/null +++ b/tests/extensions/test_overlapping_exceptions.py @@ -0,0 +1,69 @@ +# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html +# For details: https://github.com/PyCQA/pylint/blob/master/COPYING + +"""Tests for the pylint checker in :mod:`pylint.extensions.overlapping_exceptions +""" + +from os.path import dirname, join +from sys import version_info + +import pytest + +from pylint.extensions.overlapping_exceptions import OverlappingExceptionsChecker + + +@pytest.fixture(scope='module') +def checker(checker): + return OverlappingExceptionsChecker + + +@pytest.fixture(scope='module') +def disable(disable): + return ['I'] + + +def test_overlapping_exceptions(linter): + test = join(dirname(__file__), 'data', 'overlapping_exceptions.py') + linter.check([test]) + msgs = linter.reporter.messages + + expected = [ + (13, 'Overlapping exceptions (SomeException and SomeException are the same)'), + (18, 'Overlapping exceptions (SomeException is an ancestor class of SubclassException)'), + (23, 'Overlapping exceptions (SomeException and AliasException are the same)'), + (28, 'Overlapping exceptions (AliasException is an ancestor class of SubclassException)'), + (34, 'Overlapping exceptions (SomeException and AliasException are the same)'), + (34, 'Overlapping exceptions (SomeException is an ancestor class of SubclassException)'), + (34, 'Overlapping exceptions (AliasException is an ancestor class of SubclassException)'), + (39, 'Overlapping exceptions (ArithmeticError is an ancestor class of FloatingPointError)'), + (44, 'Overlapping exceptions (ValueError is an ancestor class of UnicodeDecodeError)') + ] + + assert len(msgs) == len(expected) + for msg, exp in zip(msgs, expected): + assert msg.msg_id == 'W0714' + assert msg.symbol == 'overlapping-except' + assert msg.category == 'warning' + assert (msg.line, msg.msg) == exp + + +@pytest.mark.skipif(version_info < (3, 3), + reason="not relevant to Python version") +def test_overlapping_exceptions_py33(linter): + """From Python 3.3 both IOError and socket.error are aliases for OSError.""" + test = join(dirname(__file__), 'data', 'overlapping_exceptions_py33.py') + linter.check([test]) + msgs = linter.reporter.messages + + expected = [ + (7, 'Overlapping exceptions (IOError and OSError are the same)'), + (12, 'Overlapping exceptions (socket.error and OSError are the same)'), + (17, 'Overlapping exceptions (socket.error is an ancestor class of ConnectionError)'), + ] + + assert len(msgs) == len(expected) + for msg, exp in zip(msgs, expected): + assert msg.msg_id == 'W0714' + assert msg.symbol == 'overlapping-except' + assert msg.category == 'warning' + assert (msg.line, msg.msg) == exp |