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 | 734211b6a52e4d7bbd62d3bc9e4755a0bcd14eb2 (patch) | |
| tree | a4975fbcbb562058f5ed14ad57c41e04883e4737 /checkers/stdlib.py | |
| parent | 75e4a421a7f288423986cc0a9f29730f60506aa5 (diff) | |
| download | pylint-git-734211b6a52e4d7bbd62d3bc9e4755a0bcd14eb2.tar.gz | |
Added check for redundant assert in unittest
--HG--
branch : redundant-assert
Diffstat (limited to 'checkers/stdlib.py')
| -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 d8b5fdec4..0b5a63b3e 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. |
