diff options
author | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2019-08-10 13:16:34 +0200 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2019-08-19 13:54:52 +0200 |
commit | 6c29ff712a93a7ff2348862c61a534ceaa4481eb (patch) | |
tree | 8334ac3be179c84cfa9fb075d26a4b3694329a71 /tests/message/unittest_message_definition_store.py | |
parent | 0e143606cbcdf2b0f97b09a7eb76cdcd8e35feef (diff) | |
download | pylint-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.py | 164 |
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") |