diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-12-10 20:04:22 -0600 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-12-10 20:04:22 -0600 |
commit | fc8c4d81fd81b66c424480ce5aaa91bcf49809bb (patch) | |
tree | a9fbadf3975e9036a9f2df71c655fe615796fa70 /testsuite/ext | |
parent | 9d6e6241954d001a5b49e4ea9a48c10e2a792958 (diff) | |
download | bcfg2-fc8c4d81fd81b66c424480ce5aaa91bcf49809bb.tar.gz bcfg2-fc8c4d81fd81b66c424480ce5aaa91bcf49809bb.tar.bz2 bcfg2-fc8c4d81fd81b66c424480ce5aaa91bcf49809bb.zip |
testsuite: test for exceptions raised without messages
Diffstat (limited to 'testsuite/ext')
-rw-r--r-- | testsuite/ext/__init__.py | 0 | ||||
-rw-r--r-- | testsuite/ext/exception_messages.py | 35 |
2 files changed, 35 insertions, 0 deletions
diff --git a/testsuite/ext/__init__.py b/testsuite/ext/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/testsuite/ext/__init__.py diff --git a/testsuite/ext/exception_messages.py b/testsuite/ext/exception_messages.py new file mode 100644 index 000000000..877ba42a1 --- /dev/null +++ b/testsuite/ext/exception_messages.py @@ -0,0 +1,35 @@ +from logilab import astng +from pylint.interfaces import IASTNGChecker +from pylint.checkers import BaseChecker +from pylint.checkers.utils import safe_infer + + +class ExceptionMessageChecker(BaseChecker): + __implements__ = IASTNGChecker + + name = 'Exception Messages' + msgs = \ + {'R9901': ('Exception raised without arguments', + 'Used when an exception is raised without any arguments')} + options = ( + ('exceptions-without-args', + dict(default=('NotImplementedError',), + type='csv', + metavar='<exception names>', + help='List of exception names that may be raised without arguments')),) + # this is important so that your checker is executed before others + priority = -1 + + def visit_raise(self, node): + if node.exc is None: + return + if isinstance(node.exc, astng.Name): + raised = safe_infer(node.exc) + if (isinstance(raised, astng.Class) and + raised.name not in self.config.exceptions_without_args): + self.add_message('R9901', node=node.exc) + + +def register(linter): + """required method to auto register this checker""" + linter.register_checker(ExceptionMessageChecker(linter)) |