-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
test_overlapping_exceptions.py
69 lines (53 loc) · 2.7 KB
/
test_overlapping_exceptions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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