import unittest
import warnings
from test import support
+from test.support.script_helper import assert_python_ok
class AsyncYieldFrom:
finally:
warnings._warn_unawaited_coroutine = orig_wuc
+
+class UnawaitedWarningDuringShutdownTest(unittest.TestCase):
+ # https://bugs.python.org/issue32591#msg310726
+ def test_unawaited_warning_during_shutdown(self):
+ code = ("import asyncio\n"
+ "async def f(): pass\n"
+ "asyncio.gather(f())\n")
+ assert_python_ok("-c", code)
+
+ code = ("import sys\n"
+ "async def f(): pass\n"
+ "sys.coro = f()\n")
+ assert_python_ok("-c", code)
+
+ code = ("import sys\n"
+ "async def f(): pass\n"
+ "sys.corocycle = [f()]\n"
+ "sys.corocycle.append(sys.corocycle)\n")
+ assert_python_ok("-c", code)
+
+
@support.cpython_only
class CAPITest(unittest.TestCase):
}
}
else {
+ /* if we're so late into Python finalization that the module dict is
+ gone, then we can't even use PyImport_GetModule without triggering
+ an interpreter abort.
+ */
+ if (!PyThreadState_GET()->interp->modules) {
+ return NULL;
+ }
warnings_module = PyImport_GetModule(warnings_str);
if (warnings_module == NULL)
return NULL;