From ad7f3260b6a57d768fbefad78b88e3d4d4e658cf Mon Sep 17 00:00:00 2001 From: Mark Byrne Date: Tue, 1 Oct 2024 15:11:35 +0200 Subject: [PATCH 1/3] GH-122864: Fix a unit test which was failing when the test module was run directly via: `python -m test.test_funcattrs`. --- Lib/test/test_funcattrs.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_funcattrs.py b/Lib/test/test_funcattrs.py index b3fc5ad42e7fde..d1683f4026dc6c 100644 --- a/Lib/test/test_funcattrs.py +++ b/Lib/test/test_funcattrs.py @@ -98,7 +98,23 @@ def test___globals__(self): (AttributeError, TypeError)) def test___builtins__(self): - self.assertIs(self.b.__builtins__, __builtins__) + if __name__ == "__main__": + # `func.__builtins__` is `builtins.__dict__`. + # See:https://bugs.python.org/issue42990 + + # When this test is run by executing the current module, + # `__builtins__` is the built-in module `builtins`. + + # When this test is run from another module, `__builtins__` is + # `builtins.__dict__` + # See: https://docs.python.org/3/reference/executionmodel.html#builtins-and-restricted-execution + + import builtins + builtins_dict = builtins.__dict__ + else: + builtins_dict = __builtins__ + + self.assertIs(self.b.__builtins__, builtins_dict) self.cannot_set_attr(self.b, '__builtins__', 2, (AttributeError, TypeError)) @@ -108,7 +124,7 @@ def func(s): return len(s) ns = {} func2 = type(func)(func.__code__, ns) self.assertIs(func2.__globals__, ns) - self.assertIs(func2.__builtins__, __builtins__) + self.assertIs(func2.__builtins__, builtins_dict) # Make sure that the function actually works. self.assertEqual(func2("abc"), 3) From 6606c32332832801598fd8537b6732c7e4d2cafe Mon Sep 17 00:00:00 2001 From: Mark Byrne Date: Tue, 1 Oct 2024 20:17:27 +0200 Subject: [PATCH 2/3] Condense the comment by omitting the extra links. --- Lib/test/test_funcattrs.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Lib/test/test_funcattrs.py b/Lib/test/test_funcattrs.py index d1683f4026dc6c..1e16493ee795ea 100644 --- a/Lib/test/test_funcattrs.py +++ b/Lib/test/test_funcattrs.py @@ -99,15 +99,11 @@ def test___globals__(self): def test___builtins__(self): if __name__ == "__main__": - # `func.__builtins__` is `builtins.__dict__`. - # See:https://bugs.python.org/issue42990 - # When this test is run by executing the current module, # `__builtins__` is the built-in module `builtins`. # When this test is run from another module, `__builtins__` is # `builtins.__dict__` - # See: https://docs.python.org/3/reference/executionmodel.html#builtins-and-restricted-execution import builtins builtins_dict = builtins.__dict__ From 302b763a4fc2be3ff24c5f1178497563984bedd7 Mon Sep 17 00:00:00 2001 From: Mark Byrne <31762852+mbyrnepr2@users.noreply.github.com> Date: Tue, 1 Oct 2024 22:06:22 +0200 Subject: [PATCH 3/3] Update Lib/test/test_funcattrs.py Co-authored-by: Victor Stinner --- Lib/test/test_funcattrs.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Lib/test/test_funcattrs.py b/Lib/test/test_funcattrs.py index 1e16493ee795ea..d919d62613ea7c 100644 --- a/Lib/test/test_funcattrs.py +++ b/Lib/test/test_funcattrs.py @@ -99,14 +99,7 @@ def test___globals__(self): def test___builtins__(self): if __name__ == "__main__": - # When this test is run by executing the current module, - # `__builtins__` is the built-in module `builtins`. - - # When this test is run from another module, `__builtins__` is - # `builtins.__dict__` - - import builtins - builtins_dict = builtins.__dict__ + builtins_dict = __builtins__.__dict__ else: builtins_dict = __builtins__