From 6c792bd65a22830192c6ce4ee619e805c2daed7c Mon Sep 17 00:00:00 2001 From: Yury Selivanov Date: Wed, 13 May 2015 15:34:12 -0400 Subject: [PATCH] asyncio: Add a test for asyncio.iscoroutine(). Test that asyncio.iscoroutine() supports 'async def' coroutines and collections.abc.Coroutine types. --- Lib/test/test_asyncio/test_pep492.py | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/Lib/test/test_asyncio/test_pep492.py b/Lib/test/test_asyncio/test_pep492.py index 3d8d1b8c7a..6e235c60fe 100644 --- a/Lib/test/test_asyncio/test_pep492.py +++ b/Lib/test/test_asyncio/test_pep492.py @@ -1,6 +1,10 @@ """Tests support for new syntax introduced by PEP 492.""" +import collections.abc +import gc import unittest + +from test import support from unittest import mock import asyncio @@ -83,5 +87,30 @@ class StreamReaderTests(BaseTest): self.assertEqual(data, [b'line1\n', b'line2\n', b'line3']) +class CoroutineTests(BaseTest): + + def test_iscoroutine(self): + async def foo(): pass + + f = foo() + try: + self.assertTrue(asyncio.iscoroutine(f)) + finally: + f.close() # silence warning + + class FakeCoro(collections.abc.Coroutine): + def send(self, value): pass + def throw(self, typ, val=None, tb=None): pass + + fc = FakeCoro() + try: + self.assertTrue(asyncio.iscoroutine(fc)) + finally: + # To make sure that ABCMeta caches are freed + # from FakeCoro ASAP. + fc = FakeCoro = None + support.gc_collect() + + if __name__ == '__main__': unittest.main() -- 2.40.0