diff options
author | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2021-03-30 21:18:29 +0200 |
---|---|---|
committer | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2021-04-09 20:15:43 +0200 |
commit | 9dfd32516ee22893890e1776f54c4d099ed1997e (patch) | |
tree | 40cec29dc92e919f20dee0127e5395411c7ffed3 | |
parent | 853e4ec1f38c48b4708437b3440cc9e191d48d02 (diff) | |
download | pylint-git-9dfd32516ee22893890e1776f54c4d099ed1997e.tar.gz |
Refactor MessageId Store with a better error message
-rw-r--r-- | pylint/message/message_handler_mix_in.py | 13 | ||||
-rw-r--r-- | pylint/message/message_id_store.py | 12 | ||||
-rw-r--r-- | tests/message/unittest_message_id_store.py | 4 |
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") |