summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_sys.py
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@python.org>2023-01-13 11:31:06 (GMT)
committerGitHub <noreply@github.com>2023-01-13 11:31:06 (GMT)
commitb5d4347950399800c6703736d716f08761b29245 (patch)
treebb838154108d6740e062cd5b3d0756fd1a4f2d89 /Lib/test/test_sys.py
parent94fc7706b7bc3d57cdd6d15bf8e8c4499ae53a69 (diff)
downloadcpython-b5d4347950399800c6703736d716f08761b29245.zip
cpython-b5d4347950399800c6703736d716f08761b29245.tar.gz
cpython-b5d4347950399800c6703736d716f08761b29245.tar.bz2
gh-86682: Adds sys._getframemodulename as an alternative to using _getframe (GH-99520)
Also updates calls in collections, doctest, enum, and typing modules to use _getframemodulename first when available.
Diffstat (limited to 'Lib/test/test_sys.py')
-rw-r--r--Lib/test/test_sys.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 232b799..ab1a065 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -399,6 +399,26 @@ class SysModuleTest(unittest.TestCase):
is sys._getframe().f_code
)
+ def test_getframemodulename(self):
+ # Default depth gets ourselves
+ self.assertEqual(__name__, sys._getframemodulename())
+ self.assertEqual("unittest.case", sys._getframemodulename(1))
+ i = 0
+ f = sys._getframe(i)
+ while f:
+ self.assertEqual(
+ f.f_globals['__name__'],
+ sys._getframemodulename(i) or '__main__'
+ )
+ i += 1
+ f2 = f.f_back
+ try:
+ f = sys._getframe(i)
+ except ValueError:
+ break
+ self.assertIs(f, f2)
+ self.assertIsNone(sys._getframemodulename(i))
+
# sys._current_frames() is a CPython-only gimmick.
@threading_helper.reap_threads
@threading_helper.requires_working_threading()