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

(cherry picked from commit 3adb4d864b)

Co-authored-by: Michael Droettboom <mdboom@gmail.com>

Co-authored-by: Michael Droettboom <mdboom@gmail.com>
This commit is contained in:
Miss Islington (bot) 2022-09-08 04:17:18 -07:00 committed by GitHub
parent 1276e73787
commit 0c443c2315
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 5 deletions

View File

@ -737,11 +737,6 @@ def test_exec_globals(self):
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 @@ def __setitem__(self, key, value):
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")