summaryrefslogtreecommitdiff
path: root/tests/extensions/test_overlapping_exceptions.py
diff options
context:
space:
mode:
authorAshley Whetter <ashley@awhetter.co.uk>2019-06-14 22:28:42 -0700
committerClaudiu Popa <pcmanticore@gmail.com>2019-06-20 10:02:14 +0200
commit33b8185a455c1686d038258697bb93005f2441c2 (patch)
tree4a50ccac775c009436e45803129e428ed694065f /tests/extensions/test_overlapping_exceptions.py
parent7081d91f30728653000bdfc59ea85a3395f96418 (diff)
downloadpylint-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.py69
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