summaryrefslogtreecommitdiff
path: root/pylint/test/unittest_checker_python3.py
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2018-05-12 14:33:18 -0400
committerClaudiu Popa <pcmanticore@gmail.com>2018-05-13 06:20:58 -0400
commit81450967d9a4ae376dd7882976109b798f863a7f (patch)
tree75f52b71cb65fe0b46cb6a649cc12b547d6ce69a /pylint/test/unittest_checker_python3.py
parent492e26e52e8a56809ad281a7bc010895a3d0e4eb (diff)
downloadpylint-git-81450967d9a4ae376dd7882976109b798f863a7f.tar.gz
Added two new Python 3 porting checks, `exception-escape` and `comprehension-escape`
These two are emitted whenever pylint detects that a variable defined in the said blocks is used outside of the given block. On Python 3 these values are deleted.
Diffstat (limited to 'pylint/test/unittest_checker_python3.py')
-rw-r--r--pylint/test/unittest_checker_python3.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/pylint/test/unittest_checker_python3.py b/pylint/test/unittest_checker_python3.py
index 523bb1ae6..eeef17c31 100644
--- a/pylint/test/unittest_checker_python3.py
+++ b/pylint/test/unittest_checker_python3.py
@@ -711,6 +711,41 @@ class TestPython3Checker(testutils.CheckerTestCase):
with self.assertAddsMessages(message):
self.checker.visit_attribute(node)
+ def test_comprehension_escape(self):
+ list_comp, set_comp, dict_comp = astroid.extract_node('''
+ [i for i in range(10)]
+ i #@
+ {c for c in range(10)}
+ c #@
+ {j:j for j in range(10)}
+ j #@
+ ''')
+ message = testutils.Message('comprehension-escape', node=list_comp)
+ with self.assertAddsMessages(message):
+ self.checker.visit_name(list_comp)
+
+ for node in (set_comp, dict_comp):
+ with self.assertNoMessages():
+ self.checker.visit_name(node)
+
+ def test_exception_escape(self):
+ bad, good = astroid.extract_node('''
+ try: 1/0
+ except ValueError as exc:
+ pass
+ exc #@
+ try:
+ 2/0
+ except (ValueError, TypeError) as exc:
+ exc = 2
+ exc #@
+ ''')
+ message = testutils.Message('exception-escape', node=bad)
+ with self.assertAddsMessages(message):
+ self.checker.visit_name(bad)
+ with self.assertNoMessages():
+ self.checker.visit_name(good)
+
def test_bad_sys_attribute(self):
node = astroid.extract_node('''
import sys