diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2015-09-21 00:11:44 +0000 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2015-09-21 00:11:44 +0000 |
commit | ab44b65cd5c3302672c621c0fd3cfae9a68d1d04 (patch) | |
tree | 6f7b97ad5cf33cf9b81592d15c594a7f4c2d7b42 | |
parent | 948d0d9915641b337a9dffd7dec4fcebf8e13c6e (diff) | |
download | pylint-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.py | 22 | ||||
-rw-r--r-- | pylint/test/functional/deprecated_methods_py2.txt | 8 | ||||
-rw-r--r-- | pylint/test/input/func_bug113231.py | 4 |
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) |