diff options
author | Benjamin Peterson <benjamin@python.org> | 2008-10-25 02:53:28 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2008-10-25 02:53:28 (GMT) |
commit | 399b1fe8dff3be012a49390cf971f850cf4f41aa (patch) | |
tree | 78b0e46f05db28c05bb200f26332cb9c4222f51f /Lib | |
parent | c756dcdd6086a5619e5acc0899197b01ae149e37 (diff) | |
download | cpython-399b1fe8dff3be012a49390cf971f850cf4f41aa.zip cpython-399b1fe8dff3be012a49390cf971f850cf4f41aa.tar.gz cpython-399b1fe8dff3be012a49390cf971f850cf4f41aa.tar.bz2 |
give a py3k warning when 'nonlocal' is used as a variable name
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_py3kwarn.py | 64 |
1 files changed, 23 insertions, 41 deletions
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py index 0afa8e7..c695daa 100644 --- a/Lib/test/test_py3kwarn.py +++ b/Lib/test/test_py3kwarn.py @@ -28,53 +28,35 @@ class TestPy3KWarnings(unittest.TestCase): exec "`2`" in {} self.assertWarning(None, w, expected) - def test_bool_assign(self): + def test_forbidden_names(self): # So we don't screw up our globals def safe_exec(expr): def f(**kwargs): pass exec expr in {'f' : f} - expected = "assignment to True or False is forbidden in 3.x" + tests = [("True", "assignment to True or False is forbidden in 3.x"), + ("False", "assignment to True or False is forbidden in 3.x"), + ("nonlocal", "nonlocal is a keyword in 3.x")] with check_warnings() as w: - safe_exec("True = False") - self.assertWarning(None, w, expected) - w.reset() - safe_exec("False = True") - self.assertWarning(None, w, expected) - w.reset() - try: - safe_exec("obj.False = True") - except NameError: pass - self.assertWarning(None, w, expected) - w.reset() - try: - safe_exec("obj.True = False") - except NameError: pass - self.assertWarning(None, w, expected) - w.reset() - safe_exec("def False(): pass") - self.assertWarning(None, w, expected) - w.reset() - safe_exec("def True(): pass") - self.assertWarning(None, w, expected) - w.reset() - safe_exec("class False: pass") - self.assertWarning(None, w, expected) - w.reset() - safe_exec("class True: pass") - self.assertWarning(None, w, expected) - w.reset() - safe_exec("def f(True=43): pass") - self.assertWarning(None, w, expected) - w.reset() - safe_exec("def f(False=None): pass") - self.assertWarning(None, w, expected) - w.reset() - safe_exec("f(False=True)") - self.assertWarning(None, w, expected) - w.reset() - safe_exec("f(True=1)") - self.assertWarning(None, w, expected) + for keyword, expected in tests: + safe_exec("{0} = False".format(keyword)) + self.assertWarning(None, w, expected) + w.reset() + try: + safe_exec("obj.{0} = True".format(keyword)) + except NameError: + pass + self.assertWarning(None, w, expected) + w.reset() + safe_exec("def {0}(): pass".format(keyword)) + self.assertWarning(None, w, expected) + w.reset() + safe_exec("class {0}: pass".format(keyword)) + self.assertWarning(None, w, expected) + w.reset() + safe_exec("def f({0}=43): pass".format(keyword)) + self.assertWarning(None, w, expected) + w.reset() def test_type_inequality_comparisons(self): |