Skip to content

Commit ad7f326

Browse files
committed
pythonGH-122864: Fix a unit test which was failing when the test module was
run directly via: `python -m test.test_funcattrs`.
1 parent 91e64be commit ad7f326

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

Lib/test/test_funcattrs.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,23 @@ def test___globals__(self):
9898
(AttributeError, TypeError))
9999

100100
def test___builtins__(self):
101-
self.assertIs(self.b.__builtins__, __builtins__)
101+
if __name__ == "__main__":
102+
# `func.__builtins__` is `builtins.__dict__`.
103+
# See:https://bugs.python.org/issue42990
104+
105+
# When this test is run by executing the current module,
106+
# `__builtins__` is the built-in module `builtins`.
107+
108+
# When this test is run from another module, `__builtins__` is
109+
# `builtins.__dict__`
110+
# See: https://docs.python.org/3/reference/executionmodel.html#builtins-and-restricted-execution
111+
112+
import builtins
113+
builtins_dict = builtins.__dict__
114+
else:
115+
builtins_dict = __builtins__
116+
117+
self.assertIs(self.b.__builtins__, builtins_dict)
102118
self.cannot_set_attr(self.b, '__builtins__', 2,
103119
(AttributeError, TypeError))
104120

@@ -108,7 +124,7 @@ def func(s): return len(s)
108124
ns = {}
109125
func2 = type(func)(func.__code__, ns)
110126
self.assertIs(func2.__globals__, ns)
111-
self.assertIs(func2.__builtins__, __builtins__)
127+
self.assertIs(func2.__builtins__, builtins_dict)
112128

113129
# Make sure that the function actually works.
114130
self.assertEqual(func2("abc"), 3)

0 commit comments

Comments
 (0)