GH-94808: Test __build_class__ inside non-dict __builtins__ (GH-95932)

This commit is contained in:
Michael Droettboom 2022-08-15 13:39:06 -04:00 committed by GitHub
parent 914f6367a0
commit 3adb4d864b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -737,11 +737,6 @@ class BuiltinTest(unittest.TestCase):
self.assertRaises(TypeError,
exec, code, {'__builtins__': 123})
# no __build_class__ function
code = compile("class A: pass", "", "exec")
self.assertRaisesRegex(NameError, "__build_class__ not found",
exec, code, {'__builtins__': {}})
class frozendict_error(Exception):
pass
@ -758,6 +753,15 @@ class BuiltinTest(unittest.TestCase):
self.assertRaises(frozendict_error,
exec, code, {'__builtins__': frozen_builtins})
# no __build_class__ function
code = compile("class A: pass", "", "exec")
self.assertRaisesRegex(NameError, "__build_class__ not found",
exec, code, {'__builtins__': {}})
# __build_class__ in a custom __builtins__
exec(code, {'__builtins__': frozen_builtins})
self.assertRaisesRegex(NameError, "__build_class__ not found",
exec, code, {'__builtins__': frozendict()})
# read-only globals
namespace = frozendict({})
code = compile("x=1", "test", "exec")