summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2008-10-25 02:53:28 (GMT)
committerBenjamin Peterson <benjamin@python.org>2008-10-25 02:53:28 (GMT)
commit399b1fe8dff3be012a49390cf971f850cf4f41aa (patch)
tree78b0e46f05db28c05bb200f26332cb9c4222f51f /Lib
parentc756dcdd6086a5619e5acc0899197b01ae149e37 (diff)
downloadcpython-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.py64
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):