summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Marek <tmarek@google.com>2013-11-06 13:42:14 -0800
committerTorsten Marek <tmarek@google.com>2013-11-06 13:42:14 -0800
commit69613cf1725c93aa9219fa8d16948ee991dd2347 (patch)
treeab63efed7d6835d8cd6c44ff2e3cc2c119cab670
parentba78cbf5fca401f687059949ac9f51f0a526562e (diff)
downloadpylint-69613cf1725c93aa9219fa8d16948ee991dd2347.tar.gz
Add support for registering deprecated names for messages.
-rw-r--r--test/unittest_lint.py17
-rw-r--r--utils.py16
2 files changed, 32 insertions, 1 deletions
diff --git a/test/unittest_lint.py b/test/unittest_lint.py
index 579ffc1..6442eb4 100644
--- a/test/unittest_lint.py
+++ b/test/unittest_lint.py
@@ -369,6 +369,23 @@ class PyLinterTC(TestCase):
['C: 1: Line too long (1/2)', 'C: 2: Line too long (3/4)'],
self.linter.reporter.messages)
+ def test_add_renamed_message(self):
+ self.linter.add_renamed_message('C9999', 'old-bad-name', 'invalid-name')
+ self.assertEqual('invalid-name',
+ self.linter.check_message_id('C9999').symbol)
+ self.assertEqual('invalid-name',
+ self.linter.check_message_id('old-bad-name').symbol)
+
+ def test_renamed_message_register(self):
+ class Checker(object):
+ msgs = {'W1234': ('message', 'msg-symbol', 'msg-description',
+ {'old_names': [('W0001', 'old-symbol')]})}
+ self.linter.register_messages(Checker())
+ self.assertEqual('msg-symbol',
+ self.linter.check_message_id('W0001').symbol)
+ self.assertEqual('msg-symbol',
+ self.linter.check_message_id('old-symbol').symbol)
+
class ConfigTC(TestCase):
diff --git a/utils.py b/utils.py
index c84dc87..3aa16a7 100644
--- a/utils.py
+++ b/utils.py
@@ -133,7 +133,7 @@ def build_message_def(checker, msgid, msg_tuple):
class MessageDefinition(object):
def __init__(self, checker, msgid, msg, descr, symbol, scope,
- minversion=None, maxversion=None):
+ minversion=None, maxversion=None, old_names=None):
self.checker = checker
assert len(msgid) == 5, 'Invalid message id %s' % msgid
assert msgid[0] in MSG_TYPES, \
@@ -145,6 +145,7 @@ class MessageDefinition(object):
self.scope = scope
self.minversion = minversion
self.maxversion = maxversion
+ self.old_names = old_names or []
def may_be_emitted(self):
"""return True if message may be emitted using the current interpreter"""
@@ -206,6 +207,16 @@ class MessagesHandlerMixIn(object):
self._ignored_msgs = {}
self._suppression_mapping = {}
+ def add_renamed_message(self, old_id, old_symbol, new_symbol):
+ """Register the old ID and symbol for a warning that was renamed.
+
+ This allows users to keep using the old ID/symbol in suppressions.
+ """
+ msg = self.check_message_id(new_symbol)
+ msg.old_names.append((old_id, old_symbol))
+ self._alternative_names[old_id] = msg
+ self._alternative_names[old_symbol] = msg
+
def register_messages(self, checker):
"""register a dictionary of messages
@@ -231,6 +242,9 @@ class MessagesHandlerMixIn(object):
continue
self._messages[msg.symbol] = msg
self._alternative_names[msg.msgid] = msg
+ for old_id, old_symbol in msg.old_names:
+ self._alternative_names[old_id] = msg
+ self._alternative_names[old_symbol] = msg
self._msgs_by_category.setdefault(msg.msgid[0], []).append(msg.msgid)
def disable(self, msgid, scope='package', line=None):