summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Sassoulas <pierre.sassoulas@gmail.com>2021-03-30 21:18:29 +0200
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2021-04-09 20:15:43 +0200
commit9dfd32516ee22893890e1776f54c4d099ed1997e (patch)
tree40cec29dc92e919f20dee0127e5395411c7ffed3
parent853e4ec1f38c48b4708437b3440cc9e191d48d02 (diff)
downloadpylint-git-9dfd32516ee22893890e1776f54c4d099ed1997e.tar.gz
Refactor MessageId Store with a better error message
-rw-r--r--pylint/message/message_handler_mix_in.py13
-rw-r--r--pylint/message/message_id_store.py12
-rw-r--r--tests/message/unittest_message_id_store.py4
3 files changed, 18 insertions, 11 deletions
diff --git a/pylint/message/message_handler_mix_in.py b/pylint/message/message_handler_mix_in.py
index 46a29116c..94d36c6a9 100644
--- a/pylint/message/message_handler_mix_in.py
+++ b/pylint/message/message_handler_mix_in.py
@@ -45,14 +45,13 @@ class MessagesHandlerMixIn:
def _register_by_id_managed_msg(self, msgid_or_symbol: str, line, is_disabled=True):
"""If the msgid is a numeric one, then register it to inform the user
it could furnish instead a symbolic msgid."""
- try:
- if msgid_or_symbol[1:].isdigit():
+ if msgid_or_symbol[1:].isdigit():
+ try:
symbol = self.msgs_store.message_id_store.get_symbol(msgid=msgid_or_symbol) # type: ignore
- msgid = msgid_or_symbol
- managed = (self.current_name, msgid, symbol, line, is_disabled) # type: ignore
- MessagesHandlerMixIn.__by_id_managed_msgs.append(managed)
- except KeyError:
- pass
+ except UnknownMessageError:
+ return
+ managed = (self.current_name, msgid_or_symbol, symbol, line, is_disabled) # type: ignore
+ MessagesHandlerMixIn.__by_id_managed_msgs.append(managed)
def disable(self, msgid, scope="package", line=None, ignore_unknown=False):
self._set_msg_status(
diff --git a/pylint/message/message_id_store.py b/pylint/message/message_id_store.py
index 438136cb5..3f156fcb8 100644
--- a/pylint/message/message_id_store.py
+++ b/pylint/message/message_id_store.py
@@ -26,10 +26,18 @@ class MessageIdStore:
return result
def get_symbol(self, msgid: str) -> str:
- return self.__msgid_to_symbol[msgid]
+ try:
+ return self.__msgid_to_symbol[msgid]
+ except KeyError as e:
+ msg = f"'{msgid}' is not stored in the message store."
+ raise UnknownMessageError(msg) from e
def get_msgid(self, symbol: str) -> str:
- return self.__symbol_to_msgid[symbol]
+ try:
+ return self.__symbol_to_msgid[symbol]
+ except KeyError as e:
+ msg = f"'{symbol}' is not stored in the message store."
+ raise UnknownMessageError(msg) from e
def register_message_definition(self, message_definition):
self.check_msgid_and_symbol(message_definition.msgid, message_definition.symbol)
diff --git a/tests/message/unittest_message_id_store.py b/tests/message/unittest_message_id_store.py
index ba89a4610..ad4ca3d9f 100644
--- a/tests/message/unittest_message_id_store.py
+++ b/tests/message/unittest_message_id_store.py
@@ -55,9 +55,9 @@ def test_add_msgid_and_symbol(empty_msgid_store):
assert empty_msgid_store.get_symbol("E1235") == "new-sckiil"
assert empty_msgid_store.get_msgid("old-sckiil") == "C1235"
assert empty_msgid_store.get_msgid("new-sckiil") == "E1235"
- with pytest.raises(KeyError):
+ with pytest.raises(UnknownMessageError):
empty_msgid_store.get_symbol("C1234")
- with pytest.raises(KeyError):
+ with pytest.raises(UnknownMessageError):
empty_msgid_store.get_msgid("not-exist")