summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXtreak <tir.karthi@gmail.com>2019-05-30 10:00:29 (GMT)
committerMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2019-05-30 10:00:29 (GMT)
commit0f39c2b1919727904f4fac2d79cb41dc6bfe41fe (patch)
treea1109f3fcfda224d5b963d0d2d8778c5bb9f2fc2
parent6eb814b8ce9a4fed8773a65501fb96aad8b3ecf2 (diff)
downloadcpython-0f39c2b1919727904f4fac2d79cb41dc6bfe41fe.zip
cpython-0f39c2b1919727904f4fac2d79cb41dc6bfe41fe.tar.gz
cpython-0f39c2b1919727904f4fac2d79cb41dc6bfe41fe.tar.bz2
bpo-37015: Ensure tasks created by _accept_connection2 due to AsyncMock are completed (GH-13661)
From 3.8 async functions used with mock.patch return an `AsyncMock`. `_accept_connection2` is an async function where create_task is also mocked. Don't mock `create_task` so that tasks are created out of coroutine returned by `AsyncMock` and the tasks are completed. https://bugs.python.org/issue37015
-rw-r--r--Lib/test/test_asyncio/test_selector_events.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/Lib/test/test_asyncio/test_selector_events.py b/Lib/test/test_asyncio/test_selector_events.py
index 2e52e9d..68b7853 100644
--- a/Lib/test/test_asyncio/test_selector_events.py
+++ b/Lib/test/test_asyncio/test_selector_events.py
@@ -363,14 +363,16 @@ class BaseSelectorEventLoopTests(test_utils.TestCase):
sock.accept.return_value = (mock.Mock(), mock.Mock())
backlog = 100
# Mock the coroutine generation for a connection to prevent
- # warnings related to un-awaited coroutines.
+ # warnings related to un-awaited coroutines. _accept_connection2
+ # is an async function that is patched with AsyncMock. create_task
+ # creates a task out of coroutine returned by AsyncMock, so use
+ # asyncio.sleep(0) to ensure created tasks are complete to avoid
+ # task pending warnings.
mock_obj = mock.patch.object
with mock_obj(self.loop, '_accept_connection2') as accept2_mock:
- accept2_mock.return_value = None
- with mock_obj(self.loop, 'create_task') as task_mock:
- task_mock.return_value = None
- self.loop._accept_connection(
- mock.Mock(), sock, backlog=backlog)
+ self.loop._accept_connection(
+ mock.Mock(), sock, backlog=backlog)
+ self.loop.run_until_complete(asyncio.sleep(0))
self.assertEqual(sock.accept.call_count, backlog)