From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Thu, 8 Sep 2022 11:17:18 +0000 (-0700) Subject: GH-94808: Test __build_class__ inside non-dict __builtins__ (GH-95932) (#96004) X-Git-Tag: v3.11.0rc2~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0c443c2315cad48ee15b16bbe94e3a032dd14153;p=thirdparty%2FPython%2Fcpython.git GH-94808: Test __build_class__ inside non-dict __builtins__ (GH-95932) (#96004) (cherry picked from commit 3adb4d864bb18a51334c922a732e5e3602799ba1) Co-authored-by: Michael Droettboom Co-authored-by: Michael Droettboom --- diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index efa9459a5862..64c74ec2c59a 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -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")