https://github.com/python/cpython/commit/b754aeedfbae7de0115b4c228b5e3061bc369812
commit: b754aeedfbae7de0115b4c228b5e3061bc369812
branch: main
author: Russell Keith-Magee <[email protected]>
committer: freakboy3742 <[email protected]>
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 -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]