From: Ben Darnell Date: Tue, 28 Dec 2021 20:56:33 +0000 (-0500) Subject: testing: Deprecate AsyncTestCase X-Git-Tag: v6.2.0b1~36^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5a939f76d777adc4ddfb565eafe62f5cbefc5ae3;p=thirdparty%2Ftornado.git testing: Deprecate AsyncTestCase The interfaces defined by this class rely on an event loop being "current" even though it is not running; this is incompatible with the future of the asyncio module. It's too big a task to rewrite all the tests right now, so just swallow deprecation warnings for "no current event loop". --- diff --git a/tornado/testing.py b/tornado/testing.py index cdea88ee0..45e72c8b3 100644 --- a/tornado/testing.py +++ b/tornado/testing.py @@ -161,6 +161,17 @@ class AsyncTestCase(unittest.TestCase): response = self.wait() # Test contents of response self.assertIn("FriendFeed", response.body) + + .. deprecated:: 6.2 + + AsyncTestCase and AsyncHTTPTestCase are deprecated due to changes + in future versions of Python (after 3.10). The interfaces used + in this class are incompatible with the deprecation and intended + removal of certain methods related to the idea of a "current" + event loop while no event loop is actually running. Use + `unittest.IsolatedAsyncioTestCase` instead. Note that this class + does not emit DeprecationWarnings until better migration guidance + can be provided. """ def __init__(self, methodName: str = "runTest") -> None: @@ -181,6 +192,13 @@ class AsyncTestCase(unittest.TestCase): self._test_generator = None # type: Optional[Union[Generator, Coroutine]] def setUp(self) -> None: + setup_with_context_manager(self, warnings.catch_warnings()) + warnings.filterwarnings( + "ignore", + message="There is no current event loop", + category=DeprecationWarning, + module=r"tornado\..*", + ) super().setUp() # NOTE: this code attempts to navigate deprecation warnings introduced # in Python 3.10. The idea of an implicit current event loop is