summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2015-09-21 00:11:44 +0000
committerClaudiu Popa <pcmanticore@gmail.com>2015-09-21 00:11:44 +0000
commitab44b65cd5c3302672c621c0fd3cfae9a68d1d04 (patch)
tree6f7b97ad5cf33cf9b81592d15c594a7f4c2d7b42
parent948d0d9915641b337a9dffd7dec4fcebf8e13c6e (diff)
downloadpylint-ab44b65cd5c3302672c621c0fd3cfae9a68d1d04.tar.gz
Fix tests and use all the inference results when checking for bad-open-mode and deprecated-method
-rw-r--r--pylint/checkers/stdlib.py22
-rw-r--r--pylint/test/functional/deprecated_methods_py2.txt8
-rw-r--r--pylint/test/input/func_bug113231.py4
3 files changed, 18 insertions, 16 deletions
diff --git a/pylint/checkers/stdlib.py b/pylint/checkers/stdlib.py
index aa4dab1..b7548e7 100644
--- a/pylint/checkers/stdlib.py
+++ b/pylint/checkers/stdlib.py
@@ -30,7 +30,8 @@ from pylint.checkers import utils
TYPECHECK_COMPARISON_OPERATORS = frozenset(('is', 'is not', '==',
'!=', 'in', 'not in'))
LITERAL_NODE_TYPES = (astroid.Const, astroid.Dict, astroid.List, astroid.Set)
-
+OPEN_FILES = {'open', 'file'}
+UNITTEST_CASE = 'unittest.case'
if sys.version_info >= (3, 0):
OPEN_MODULE = '_io'
TYPE_QNAME = 'builtins.type'
@@ -201,15 +202,16 @@ class StdlibChecker(BaseChecker):
'deprecated-method')
def visit_call(self, node):
"""Visit a CallFunc node."""
- if hasattr(node, 'func'):
- infer = helpers.safe_infer(node.func)
- if infer:
- if infer.root().name == OPEN_MODULE:
- if getattr(node.func, 'name', None) in ('open', 'file'):
+ try:
+ for inferred in node.func.infer():
+ if inferred.root().name == OPEN_MODULE:
+ if getattr(node.func, 'name', None) in OPEN_FILES:
self._check_open_mode(node)
- if infer.root().name == 'unittest.case':
- self._check_redundant_assert(node, infer)
- self._check_deprecated_method(node, infer)
+ if inferred.root().name == UNITTEST_CASE:
+ self._check_redundant_assert(node, inferred)
+ self._check_deprecated_method(node, inferred)
+ except astroid.InferenceError:
+ return
@utils.check_messages('boolean-datetime')
def visit_unaryop(self, node):
@@ -246,7 +248,7 @@ class StdlibChecker(BaseChecker):
args=(node.func.attrname, ))
else:
for since_vers, func_list in self.deprecated[py_vers].items():
- if since_vers < sys.version_info and qname in func_list:
+ if since_vers <= sys.version_info and qname in func_list:
self.add_message('deprecated-method', node=node,
args=(node.func.attrname, ))
break
diff --git a/pylint/test/functional/deprecated_methods_py2.txt b/pylint/test/functional/deprecated_methods_py2.txt
index 226e8d3..e103818 100644
--- a/pylint/test/functional/deprecated_methods_py2.txt
+++ b/pylint/test/functional/deprecated_methods_py2.txt
@@ -1,4 +1,4 @@
-deprecated-method:5::Using deprecated method popen2()
-deprecated-method:6::Using deprecated method popen3()
-deprecated-method:7::Using deprecated method popen4()
-deprecated-method:8::Using deprecated method getchildren()
+deprecated-method:6::Using deprecated method popen2()
+deprecated-method:7::Using deprecated method popen3()
+deprecated-method:8::Using deprecated method popen4()
+deprecated-method:9::Using deprecated method getchildren()
diff --git a/pylint/test/input/func_bug113231.py b/pylint/test/input/func_bug113231.py
index 80996c3..1697ed6 100644
--- a/pylint/test/input/func_bug113231.py
+++ b/pylint/test/input/func_bug113231.py
@@ -17,8 +17,8 @@ logger = renamed_logging.getLogger(__name__)
fake_logger = Logger()
# Statements that should be flagged:
-renamed_logging.warn('%s, %s' % (4, 5))
-logger.warn('%s' % 5)
+renamed_logging.warning('%s, %s' % (4, 5))
+logger.warning('%s' % 5)
# Statements that should not be flagged:
fake_logger.warn('%s' % 5)