summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_asyncio
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2014-06-27 10:28:41 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2014-06-27 10:28:41 (GMT)
commitbbd96c6f47046e11f47de06550dcd1c816aad71c (patch)
treecfc97c37518b3e86bdf1e470ab8f7fea8dcf73f6 /Lib/test/test_asyncio
parentc4cca45baf89f694ac86ee950a742c0a56e8dc7f (diff)
downloadcpython-bbd96c6f47046e11f47de06550dcd1c816aad71c.zip
cpython-bbd96c6f47046e11f47de06550dcd1c816aad71c.tar.gz
cpython-bbd96c6f47046e11f47de06550dcd1c816aad71c.tar.bz2
asyncio, Tulip issue 137: In debug mode, add the traceback where the coroutine
object was created to the "coroutine ... was never yield from" log
Diffstat (limited to 'Lib/test/test_asyncio')
-rw-r--r--Lib/test/test_asyncio/test_tasks.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/Lib/test/test_asyncio/test_tasks.py b/Lib/test/test_asyncio/test_tasks.py
index 8fd3e28..c5eb92b 100644
--- a/Lib/test/test_asyncio/test_tasks.py
+++ b/Lib/test/test_asyncio/test_tasks.py
@@ -1,6 +1,7 @@
"""Tests for tasks.py."""
import os.path
+import re
import sys
import types
import unittest
@@ -1572,6 +1573,37 @@ class TaskTests(test_utils.TestCase):
})
mock_handler.reset_mock()
+ @mock.patch('asyncio.tasks.logger')
+ def test_coroutine_never_yielded(self, m_log):
+ debug = asyncio.tasks._DEBUG
+ try:
+ asyncio.tasks._DEBUG = True
+ @asyncio.coroutine
+ def coro_noop():
+ pass
+ finally:
+ asyncio.tasks._DEBUG = debug
+
+ tb_filename = __file__
+ tb_lineno = sys._getframe().f_lineno + 1
+ coro = coro_noop()
+ coro = None
+ support.gc_collect()
+
+ self.assertTrue(m_log.error.called)
+ message = m_log.error.call_args[0][0]
+ func_filename, func_lineno = test_utils.get_function_source(coro_noop)
+ regex = (r'^Coroutine %s\(\) at %s:%s was never yielded from\n'
+ r'Coroutine object created at \(most recent call last\):\n'
+ r'.*\n'
+ r' File "%s", line %s, in test_coroutine_never_yielded\n'
+ r' coro = coro_noop\(\)$'
+ % (re.escape(coro_noop.__qualname__),
+ func_filename, func_lineno,
+ tb_filename, tb_lineno))
+
+ self.assertRegex(message, re.compile(regex, re.DOTALL))
+
class GatherTestsBase: