asyncio: Add a test for asyncio.iscoroutine().

Test that asyncio.iscoroutine() supports 'async def' coroutines and
collections.abc.Coroutine types.
This commit is contained in:
Yury Selivanov 2015-05-13 15:34:12 -04:00
parent af928b65fc
commit 6c792bd65a
1 changed files with 29 additions and 0 deletions

View File

@ -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()