Skip to content

Commit 0c443c2

Browse files
GH-94808: Test __build_class__ inside non-dict __builtins__ (GH-95932) (#96004)
(cherry picked from commit 3adb4d8) Co-authored-by: Michael Droettboom <mdboom@gmail.com> Co-authored-by: Michael Droettboom <mdboom@gmail.com>
1 parent 1276e73 commit 0c443c2

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

Lib/test/test_builtin.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -737,11 +737,6 @@ def test_exec_globals(self):
737737
self.assertRaises(TypeError,
738738
exec, code, {'__builtins__': 123})
739739

740-
# no __build_class__ function
741-
code = compile("class A: pass", "", "exec")
742-
self.assertRaisesRegex(NameError, "__build_class__ not found",
743-
exec, code, {'__builtins__': {}})
744-
745740
class frozendict_error(Exception):
746741
pass
747742

@@ -758,6 +753,15 @@ def __setitem__(self, key, value):
758753
self.assertRaises(frozendict_error,
759754
exec, code, {'__builtins__': frozen_builtins})
760755

756+
# no __build_class__ function
757+
code = compile("class A: pass", "", "exec")
758+
self.assertRaisesRegex(NameError, "__build_class__ not found",
759+
exec, code, {'__builtins__': {}})
760+
# __build_class__ in a custom __builtins__
761+
exec(code, {'__builtins__': frozen_builtins})
762+
self.assertRaisesRegex(NameError, "__build_class__ not found",
763+
exec, code, {'__builtins__': frozendict()})
764+
761765
# read-only globals
762766
namespace = frozendict({})
763767
code = compile("x=1", "test", "exec")

0 commit comments

Comments
 (0)