https://github.com/python/cpython/commit/b754aeedfbae7de0115b4c228b5e3061bc369812
commit: b754aeedfbae7de0115b4c228b5e3061bc369812
branch: main
author: Russell Keith-Magee <russ...@keith-magee.com>
committer: freakboy3742 <russ...@keith-magee.com>
date: 2025-03-19T08:33:31+08:00
summary:

gh-121468: Ensure PDB cleans up event loop policies after using asyncio. 
(#131388)

Adds teardown logic, plus a change to asyncio.run usage, to avoid warnings when
running the test suite single process.

files:
M Lib/test/test_pdb.py

diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
index 8cd634426bd88b..18fb94af479527 100644
--- a/Lib/test/test_pdb.py
+++ b/Lib/test/test_pdb.py
@@ -13,6 +13,7 @@
 import zipapp
 import zipfile
 
+from asyncio.events import _set_event_loop_policy
 from contextlib import ExitStack, redirect_stdout
 from io import StringIO
 from test import support
@@ -2154,7 +2155,7 @@ def test_pdb_asynctask():
             ...     import pdb; pdb.Pdb(nosigint=True, 
readrc=False).set_trace()
 
             >>> def test_function():
-            ...     asyncio.run(test())
+            ...     asyncio.run(test(), loop_factory=asyncio.EventLoop)
 
             >>> with PdbTestInput([  # doctest: +ELLIPSIS
             ...     '$_asynctask',
@@ -4670,13 +4671,33 @@ def func():
 
 def load_tests(loader, tests, pattern):
     from test import test_pdb
+
     def setUpPdbBackend(backend):
         def setUp(test):
             import pdb
             pdb.set_default_backend(backend)
         return setUp
-    tests.addTest(doctest.DocTestSuite(test_pdb, 
setUp=setUpPdbBackend('monitoring')))
-    tests.addTest(doctest.DocTestSuite(test_pdb, 
setUp=setUpPdbBackend('settrace')))
+
+    def tearDown(test):
+        # Ensure that asyncio state has been cleared at the end of the test.
+        # This prevents a "test altered the execution environment" warning if
+        # asyncio features are used.
+        _set_event_loop_policy(None)
+
+    tests.addTest(
+        doctest.DocTestSuite(
+            test_pdb,
+            setUp=setUpPdbBackend('monitoring'),
+            tearDown=tearDown,
+        )
+    )
+    tests.addTest(
+        doctest.DocTestSuite(
+            test_pdb,
+            setUp=setUpPdbBackend('settrace'),
+            tearDown=tearDown,
+        )
+    )
     return tests
 
 

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to