Skip to content

Commit e8bed2f

Browse files
Pierre-SassoulasPCManticore
authored andcommitted
[pylint.message] Add unittests for MessageDefinition
1 parent 26c4108 commit e8bed2f

File tree

2 files changed

+89
-1
lines changed

2 files changed

+89
-1
lines changed

pylint/message/message_definition.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ def __init__(
3838
self.old_names = old_names or []
3939

4040
def __repr__(self):
41-
return "MessageDefinition:{}".format(self.__dict__)
41+
return "MessageDefinition:%s (%s)" % (self.symbol, self.msgid)
42+
43+
def __str__(self):
44+
return "%s:\n%s %s" % (repr(self), self.msg, self.description)
4245

4346
def may_be_emitted(self):
4447
"""return True if message may be emitted using the current interpreter"""
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# -*- coding: utf-8 -*-
2+
3+
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
4+
# For details: https://github.com/PyCQA/pylint/blob/master/COPYING
5+
6+
import sys
7+
8+
from pylint.checkers import BaseChecker
9+
from pylint.constants import WarningScope
10+
from pylint.message import MessageDefinition
11+
12+
13+
class FalseChecker(BaseChecker):
14+
name = "FalseChecker"
15+
msgs = {
16+
"W1234": ("message one", "msg-symbol-one", "msg description"),
17+
"W1235": (
18+
"message two",
19+
"msg-symbol-two",
20+
"msg description",
21+
{"old_names": [("W1230", "msg-symbol-one")]},
22+
),
23+
}
24+
25+
26+
class TestMessagesDefinition(object):
27+
def assert_with_fail_msg(self, msg, expected=True):
28+
fail_msg = "With minversion='{}' and maxversion='{}',".format(
29+
msg.minversion, msg.maxversion
30+
)
31+
fail_msg += " and the python interpreter being {} ".format(sys.version_info)
32+
fail_msg += "the message should{}be emitable"
33+
if expected:
34+
assert msg.may_be_emitted(), fail_msg.format(" ")
35+
else:
36+
assert not msg.may_be_emitted(), fail_msg.format(" not ")
37+
38+
def get_message_definition(self):
39+
args = [
40+
FalseChecker(),
41+
"W1234",
42+
"message",
43+
"description",
44+
"msg-symbol",
45+
WarningScope.NODE,
46+
]
47+
kwargs = {"minversion": None, "maxversion": None}
48+
return MessageDefinition(*args, **kwargs)
49+
50+
def test_may_be_emitted(self):
51+
major = sys.version_info.major
52+
minor = sys.version_info.minor
53+
msg = self.get_message_definition()
54+
self.assert_with_fail_msg(msg, expected=True)
55+
msg.minversion = (major, minor - 1)
56+
msg.maxversion = (major, minor + 1)
57+
self.assert_with_fail_msg(msg, expected=True)
58+
msg.minversion = (major, minor + 1)
59+
self.assert_with_fail_msg(msg, expected=False)
60+
msg.minversion = (major, minor - 1)
61+
self.assert_with_fail_msg(msg, expected=True)
62+
msg.maxversion = (major, minor - 1)
63+
self.assert_with_fail_msg(msg, expected=False)
64+
65+
def test_repr(self):
66+
msg = self.get_message_definition()
67+
repr_str = str([msg, msg])
68+
assert "W1234" in repr_str
69+
assert "msg-symbol" in repr_str
70+
expected = "[MessageDefinition:msg-symbol-one (W1234), MessageDefinition:msg-symbol-two (W1235)]"
71+
assert str(FalseChecker().messages) == expected
72+
73+
def test_format_help(self):
74+
msg = self.get_message_definition()
75+
major = sys.version_info.major
76+
minor = sys.version_info.minor
77+
msg.minversion = (major, minor - 1)
78+
msg.maxversion = (major, minor + 1)
79+
format_str_checker_ref = msg.format_help(checkerref=False)
80+
format_str = msg.format_help(checkerref=True)
81+
assert str(minor - 1) in format_str
82+
assert str(major + 1) in format_str_checker_ref
83+
expected_format_help = """:msg-symbol-one (W1234): *message one*
84+
msg description"""
85+
assert FalseChecker().messages[0].format_help() == expected_format_help

0 commit comments

Comments
 (0)