diff options
author | Vlad Temian <vladtemian@gmail.com> | 2014-11-22 15:01:53 +0200 |
---|---|---|
committer | Vlad Temian <vladtemian@gmail.com> | 2014-11-22 15:01:53 +0200 |
commit | 9583af93f45602ce67880ea781298b2e1114b219 (patch) | |
tree | e7427d40cc03f6be11c796ec1a960c47ab9b1681 | |
parent | 0442fb6e49a9e1b0227cd1db78d339f1fe6788ae (diff) | |
download | pylint-9583af93f45602ce67880ea781298b2e1114b219.tar.gz |
Added check for redundant assert in unittest
-rw-r--r-- | checkers/stdlib.py | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/checkers/stdlib.py b/checkers/stdlib.py index d8b5fde..0b5a63b 100644 --- a/checkers/stdlib.py +++ b/checkers/stdlib.py @@ -48,16 +48,24 @@ class StdlibChecker(BaseChecker): 'midnight UTC. This behaviour was fixed in Python 3.5. ' 'See http://bugs.python.org/issue13936 for reference.', {'maxversion': (3, 5)}), - } - - @utils.check_messages('bad-open-mode') + 'W1503': ('Redundant use of assertTrue or assertFalse with constant ' + 'value %r', + 'redundant-assert', + 'Using assertTrue or assertFalse when the first' + 'argument is literal, is redundant.') + } + + @utils.check_messages('bad-open-mode', 'redundant-assert') def visit_callfunc(self, node): """Visit a CallFunc node.""" if hasattr(node, 'func'): infer = utils.safe_infer(node.func) - if infer and infer.root().name == OPEN_MODULE: - if getattr(node.func, 'name', None) in ('open', 'file'): - self._check_open_mode(node) + if infer: + if infer.root().name == OPEN_MODULE: + if getattr(node.func, 'name', None) in ('open', 'file'): + self._check_open_mode(node) + if infer.root().name == 'unittest.case': + self._check_redundant_assert(node, infer) @utils.check_messages('boolean-datetime') def visit_unaryop(self, node): @@ -77,6 +85,13 @@ class StdlibChecker(BaseChecker): for value in node.values: self._check_datetime(value) + def _check_redundant_assert(self, node, infer): + if (infer.name in ['assertTrue', 'assertFalse'] and + isinstance(infer, astroid.bases.BoundMethod) and + isinstance(node.args[0], astroid.node_classes.Const)): + self.add_message('redundant-assert', args=(node.args[0].value,), + node=node) + def _check_datetime(self, node): """ Check that a datetime was infered. If so, emit boolean-datetime warning. |