summaryrefslogtreecommitdiff
path: root/checkers/stdlib.py
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2015-01-04 00:14:38 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2015-01-04 00:14:38 +0200
commite118080de3cc49762c8ab67fa6f73b0a2259cc57 (patch)
tree8009a859e9906e68dc0478fd2c4f0764b9784428 /checkers/stdlib.py
parentb23ba67c3567206beb02e6eef5337f52cf716849 (diff)
parent1198872bef0b9de1b8d26d340fb18797317a05e8 (diff)
downloadpylint-git-e118080de3cc49762c8ab67fa6f73b0a2259cc57.tar.gz
Merged in vtemian/pylint/redundant-assert (pull request #202)
Added check for redundant assert #ropython-sprints
Diffstat (limited to 'checkers/stdlib.py')
-rw-r--r--checkers/stdlib.py30
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.