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