diff options
Diffstat (limited to 'checkers/stdlib.py')
| -rw-r--r-- | checkers/stdlib.py | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/checkers/stdlib.py b/checkers/stdlib.py index fadb58678..8f1965eaf 100644 --- a/checkers/stdlib.py +++ b/checkers/stdlib.py @@ -93,16 +93,26 @@ 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-unittest-assert', + 'The first argument of assertTrue and assertFalse is' + 'a condition. If a constant is passed as parameter, that' + 'condition will be always true. In this case a warning ' + 'should be emited.') + } + + @utils.check_messages('bad-open-mode', 'redundant-unittest-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): @@ -122,6 +132,14 @@ class StdlibChecker(BaseChecker): for value in node.values: self._check_datetime(value) + def _check_redundant_assert(self, node, infer): + if (isinstance(infer, astroid.BoundMethod) and + isinstance(node.args[0], astroid.Const) and + infer.name in ['assertTrue', 'assertFalse']): + self.add_message('redundant-unittest-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. |
