Skip to content

Commit

Permalink
[fix] Prevent DeprecationWarning about existing event loops to bubble…
Browse files Browse the repository at this point in the history
… up into user code. (#461)

Pytest-asyncio fixture setup currently uses `get_event_loop` to clean up loops that don't correspond to the loop returned by the `event_loop` fixture. Starting with CPython 3.10.9 and 3.11.1 the call to get_event_loop emits a DeprecationWarning when function is called, but no event loop exists. This warning bubbles up and shows in test runs of library users. If the users have enabled `-W error` their tests will fail due to a warning in pytest-asyncio.

This patch ignores the DeprecationWarning in the fixture setup. This is a temporary solution to restore compatibility with the respective CPython patch releases.

Addresses #460

Signed-off-by: Michael Seifert <[email protected]>

Signed-off-by: Michael Seifert <[email protected]>
  • Loading branch information
seifertm authored Dec 8, 2022
1 parent 44ca3da commit 007e8ec
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
5 changes: 5 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
Changelog
=========

0.20.3 (22-12-08)
=================
- Prevent DeprecationWarning to bubble up on CPython 3.10.9 and 3.11.1.
`#460 <https://github.com/pytest-dev/pytest-asyncio/issues/460>`_

0.20.2 (22-11-11)
=================
- Fixes an issue with async fixtures that are defined as methods on a test class not being rebound to the actual test instance. `#197 <https://github.com/pytest-dev/pytest-asyncio/issues/197>`_
Expand Down
4 changes: 3 additions & 1 deletion pytest_asyncio/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,9 @@ def pytest_fixture_setup(
loop = outcome.get_result()
policy = asyncio.get_event_loop_policy()
try:
old_loop = policy.get_event_loop()
with warnings.catch_warnings():
warnings.simplefilter("ignore", DeprecationWarning)
old_loop = policy.get_event_loop()
if old_loop is not loop:
old_loop.close()
except RuntimeError:
Expand Down

0 comments on commit 007e8ec

Please sign in to comment.