summaryrefslogtreecommitdiff
path: root/tests/message/unittest_message_definition_store.py
diff options
context:
space:
mode:
authorPierre Sassoulas <pierre.sassoulas@gmail.com>2019-08-10 13:16:34 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2019-08-19 13:54:52 +0200
commit6c29ff712a93a7ff2348862c61a534ceaa4481eb (patch)
tree8334ac3be179c84cfa9fb075d26a4b3694329a71 /tests/message/unittest_message_definition_store.py
parent0e143606cbcdf2b0f97b09a7eb76cdcd8e35feef (diff)
downloadpylint-git-6c29ff712a93a7ff2348862c61a534ceaa4481eb.tar.gz
[pylint.message] Simplification with 1-1 link between symbol and msgid
Also add a lot of unit tests.
Diffstat (limited to 'tests/message/unittest_message_definition_store.py')
-rw-r--r--tests/message/unittest_message_definition_store.py164
1 files changed, 140 insertions, 24 deletions
diff --git a/tests/message/unittest_message_definition_store.py b/tests/message/unittest_message_definition_store.py
index c656781fe..3a4ebf349 100644
--- a/tests/message/unittest_message_definition_store.py
+++ b/tests/message/unittest_message_definition_store.py
@@ -10,32 +10,141 @@ import pytest
from pylint.checkers import BaseChecker
from pylint.exceptions import InvalidMessageError, UnknownMessageError
-from pylint.message import MessageDefinition, MessageDefinitionStore
+from pylint.message import MessageDefinition
+
+from .generic_fixtures import empty_store, store
+
+
+@pytest.mark.parametrize(
+ "messages,expected",
+ [
+ (
+ {
+ "W1234": ("message one", "msg-symbol-one", "msg description"),
+ "W4321": ("message two", "msg-symbol-two", "msg description"),
+ },
+ r"Inconsistent checker part in message id 'W4321' (expected 'x12xx' because we already had ['W1234']).",
+ ),
+ (
+ {
+ "W1233": (
+ "message two",
+ "msg-symbol-two",
+ "msg description",
+ {"old_names": [("W1234", "old-symbol")]},
+ ),
+ "W1234": ("message one", "msg-symbol-one", "msg description"),
+ },
+ "Message id 'W1234' cannot have both 'msg-symbol-one' and 'old-symbol' as symbolic name.",
+ ),
+ (
+ {
+ "W1234": ("message one", "msg-symbol-one", "msg description"),
+ "W1235": (
+ "message two",
+ "msg-symbol-two",
+ "msg description",
+ {"old_names": [("W1234", "old-symbol")]},
+ ),
+ },
+ "Message id 'W1234' cannot have both 'msg-symbol-one' and 'old-symbol' as symbolic name.",
+ ),
+ (
+ {
+ "W1234": (
+ "message one",
+ "msg-symbol-one",
+ "msg description",
+ {"old_names": [("W1201", "old-symbol-one")]},
+ ),
+ "W1235": (
+ "message two",
+ "msg-symbol-two",
+ "msg description",
+ {"old_names": [("W1201", "old-symbol-two")]},
+ ),
+ },
+ "Message id 'W1201' cannot have both 'old-symbol-one' and 'old-symbol-two' as symbolic name.",
+ ),
+ (
+ {
+ "W1234": ("message one", "msg-symbol", "msg description"),
+ "W1235": ("message two", "msg-symbol", "msg description"),
+ },
+ "Message symbol 'msg-symbol' cannot be used for 'W1234' and 'W1235' at the same time. "
+ "If you're creating an 'old_names' use 'old-msg-symbol' as the old symbol.",
+ ),
+ (
+ {
+ "W1233": (
+ "message two",
+ "msg-symbol-two",
+ "msg description",
+ {"old_names": [("W1230", "msg-symbol-one")]},
+ ),
+ "W1234": ("message one", "msg-symbol-one", "msg description"),
+ },
+ "Message symbol 'msg-symbol-one' cannot be used for 'W1230' and 'W1234' at the same time."
+ " If you're creating an 'old_names' use 'old-msg-symbol-one' as the old symbol.",
+ ),
+ (
+ {
+ "W1234": ("message one", "msg-symbol-one", "msg description"),
+ "W1235": (
+ "message two",
+ "msg-symbol-two",
+ "msg description",
+ {"old_names": [("W1230", "msg-symbol-one")]},
+ ),
+ },
+ "Message symbol 'msg-symbol-one' cannot be used for 'W1230' and 'W1234' at the same time. "
+ "If you're creating an 'old_names' use 'old-msg-symbol-one' as the old symbol.",
+ ),
+ (
+ {
+ "W1234": (
+ "message one",
+ "msg-symbol-one",
+ "msg description",
+ {"old_names": [("W1230", "old-symbol-one")]},
+ ),
+ "W1235": (
+ "message two",
+ "msg-symbol-two",
+ "msg description",
+ {"old_names": [("W1231", "old-symbol-one")]},
+ ),
+ },
+ "Message symbol 'old-symbol-one' cannot be used for 'W1230' and 'W1231' at the same time. "
+ "If you're creating an 'old_names' use 'old-old-symbol-one' as the old symbol.",
+ ),
+ ],
+)
+def test_register_error(empty_store, messages, expected):
+ class Checker(BaseChecker):
+ name = "checker"
+ msgs = messages
+ with pytest.raises(InvalidMessageError) as cm:
+ empty_store.register_messages_from_checker(Checker())
+ assert str(cm.value) == expected
-@pytest.fixture
-def store():
- store = MessageDefinitionStore()
- class Checker(BaseChecker):
- name = "achecker"
- msgs = {
- "W1234": (
- "message",
- "msg-symbol",
- "msg description.",
- {"old_names": [("W0001", "old-symbol")]},
- ),
- "E1234": (
- "Duplicate keyword argument %r in %s call",
- "duplicate-keyword-arg",
- "Used when a function call passes the same keyword argument multiple times.",
- {"maxversion": (2, 6)},
- ),
- }
-
- store.register_messages_from_checker(Checker())
- return store
+def test_register_error_new_id_duplicate_of_new(empty_store):
+ class CheckerOne(BaseChecker):
+ name = "checker_one"
+ msgs = {"W1234": ("message one", "msg-symbol-one", "msg description.")}
+
+ class CheckerTwo(BaseChecker):
+ name = "checker_two"
+ msgs = {"W1234": ("message two", "msg-symbol-two", "another msg description.")}
+
+ empty_store.register_messages_from_checker(CheckerOne())
+ test_register_error(
+ empty_store,
+ {"W1234": ("message two", "msg-symbol-two", "another msg description.")},
+ "Message id 'W1234' cannot have both 'msg-symbol-one' and 'msg-symbol-two' as symbolic name.",
+ )
def test_format_help(capsys, store):
@@ -70,7 +179,14 @@ class TestMessageDefinitionStore(object):
assert desc == msg.format_help(checkerref=checkerref)
def test_check_message_id(self, store):
- assert isinstance(store.get_message_definitions("W1234")[0], MessageDefinition)
+ w1234 = store.get_message_definitions("W1234")[0]
+ w0001 = store.get_message_definitions("W0001")[0]
+ e1234 = store.get_message_definitions("E1234")[0]
+ old_symbol = store.get_message_definitions("old-symbol")[0]
+ assert isinstance(w1234, MessageDefinition)
+ assert isinstance(e1234, MessageDefinition)
+ assert w1234 == w0001
+ assert w1234 == old_symbol
with pytest.raises(UnknownMessageError):
store.get_message_definitions("YB12")