diff --git a/.gitignore b/.gitignore index 7dd9b771..bca72971 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] +*.mypy_cache # C extensions *.so @@ -67,3 +68,6 @@ target/ # generated by setuptools_scm pytest_asyncio/_version.py + +# JetBrains Run Configurations +.run diff --git a/pytest_asyncio/plugin.py b/pytest_asyncio/plugin.py index 934fb91c..3116fce2 100644 --- a/pytest_asyncio/plugin.py +++ b/pytest_asyncio/plugin.py @@ -322,6 +322,7 @@ async def setup(): def finalizer() -> None: """Yield again, to finalize.""" + nonlocal event_loop async def async_finalizer() -> None: try: @@ -333,6 +334,9 @@ async def async_finalizer() -> None: msg += "Yield only once." raise ValueError(msg) + if event_loop.is_closed(): + event_loop = asyncio.new_event_loop() + asyncio.set_event_loop(event_loop) event_loop.run_until_complete(async_finalizer()) result = event_loop.run_until_complete(setup())