diff options
author | Claudiu Popa <pcmanticore@gmail.com> | 2018-05-12 14:33:18 -0400 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2018-05-13 06:20:58 -0400 |
commit | 81450967d9a4ae376dd7882976109b798f863a7f (patch) | |
tree | 75f52b71cb65fe0b46cb6a649cc12b547d6ce69a /pylint/test/unittest_checker_python3.py | |
parent | 492e26e52e8a56809ad281a7bc010895a3d0e4eb (diff) | |
download | pylint-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.py | 35 |
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 |