Mailing List Archive

GH-94808: Test __build_class__ inside non-dict __builtins__ (GH-95932)
https://github.com/python/cpython/commit/3adb4d864bb18a51334c922a732e5e3602799ba1
commit: 3adb4d864bb18a51334c922a732e5e3602799ba1
branch: main
author: Michael Droettboom <mdboom@gmail.com>
committer: brandtbucher <brandtbucher@gmail.com>
date: 2022-08-15T10:39:06-07:00
summary:

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

files:
M Lib/test/test_builtin.py

diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index d5eaf291a5c..6fa5ea67c8b 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -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")

_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
https://mail.python.org/mailman/listinfo/python-checkins