Commit dbf9c4eb authored by Benjamin Peterson's avatar Benjamin Peterson

now that exec is a function, we can use the shorter assertRaises to test

parent 44edbf6d
...@@ -18,21 +18,9 @@ class TestSpecifics(unittest.TestCase): ...@@ -18,21 +18,9 @@ class TestSpecifics(unittest.TestCase):
self.assertRaises(SyntaxError, eval, 'lambda a,a:0') self.assertRaises(SyntaxError, eval, 'lambda a,a:0')
self.assertRaises(SyntaxError, eval, 'lambda a,a=1:0') self.assertRaises(SyntaxError, eval, 'lambda a,a=1:0')
self.assertRaises(SyntaxError, eval, 'lambda a=1,a=1:0') self.assertRaises(SyntaxError, eval, 'lambda a=1,a=1:0')
try: self.assertRaises(SyntaxError, exec, 'def f(a, a): pass')
exec('def f(a, a): pass') self.assertRaises(SyntaxError, exec, 'def f(a = 0, a = 1): pass')
self.fail("duplicate arguments") self.assertRaises(SyntaxError, exec, 'def f(a): global a; a = 1')
except SyntaxError:
pass
try:
exec('def f(a = 0, a = 1): pass')
self.fail("duplicate keyword arguments")
except SyntaxError:
pass
try:
exec('def f(a): global a; a = 1')
self.fail("variable is global and local")
except SyntaxError:
pass
def test_syntax_error(self): def test_syntax_error(self):
self.assertRaises(SyntaxError, compile, "1+*3", "filename", "exec") self.assertRaises(SyntaxError, compile, "1+*3", "filename", "exec")
...@@ -41,11 +29,7 @@ class TestSpecifics(unittest.TestCase): ...@@ -41,11 +29,7 @@ class TestSpecifics(unittest.TestCase):
self.assertRaises(SyntaxError, compile, "f(None=1)", "<string>", "exec") self.assertRaises(SyntaxError, compile, "f(None=1)", "<string>", "exec")
def test_duplicate_global_local(self): def test_duplicate_global_local(self):
try: self.assertRaises(SyntaxError, exec, 'def f(a): global a; a = 1')
exec('def f(a): global a; a = 1')
self.fail("variable is global and local")
except SyntaxError:
pass
def test_exec_with_general_mapping_for_locals(self): def test_exec_with_general_mapping_for_locals(self):
...@@ -76,23 +60,13 @@ class TestSpecifics(unittest.TestCase): ...@@ -76,23 +60,13 @@ class TestSpecifics(unittest.TestCase):
self.assertEqual(m.results, ('z', g)) self.assertEqual(m.results, ('z', g))
exec('z = locals()', g, m) exec('z = locals()', g, m)
self.assertEqual(m.results, ('z', m)) self.assertEqual(m.results, ('z', m))
try: self.assertRaises(TypeError, exec, 'z = b', m)
exec('z = b', m)
except TypeError:
pass
else:
self.fail('Did not validate globals as a real dict')
class A: class A:
"Non-mapping" "Non-mapping"
pass pass
m = A() m = A()
try: self.assertRaises(TypeError, exec, 'z = a', g, m)
exec('z = a', g, m)
except TypeError:
pass
else:
self.fail('Did not validate locals as a mapping')
# Verify that dict subclasses work as well # Verify that dict subclasses work as well
class D(dict): class D(dict):
...@@ -129,11 +103,7 @@ def f(x): ...@@ -129,11 +103,7 @@ def f(x):
self.assertEqual(g['f'](5), 0) self.assertEqual(g['f'](5), 0)
def test_argument_order(self): def test_argument_order(self):
try: self.assertRaises(SyntaxError, exec, 'def f(a=1, b): pass')
exec('def f(a=1, b): pass')
self.fail("non-default args after default")
except SyntaxError:
pass
def test_float_literals(self): def test_float_literals(self):
# testing bad float literals # testing bad float literals
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment