Certain short-lived coroutines are not terminated properly. Upon canceling, a task needs another scheduling cycle to process asyncio.CancelledError. Search for the offenders in the test log by Task was destroyed but it is pending!. Example:
ERROR root:base_events.py:1619 Task was destroyed but it is pending!
source_traceback: Object created at (most recent call last):
File "/home/travis/virtualenv/python3.7-dev/bin/pytest", line 8, in <module>
sys.exit(main())
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/config/__init__.py", line 82, in main
return config.hook.pytest_cmdline_main(config=config)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/hooks.py", line 286, in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/manager.py", line 93, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/manager.py", line 87, in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
res = hook_impl.function(*args)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/main.py", line 243, in pytest_cmdline_main
return wrap_session(config, _main)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/main.py", line 206, in wrap_session
session.exitstatus = doit(config, session) or 0
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/main.py", line 250, in _main
config.hook.pytest_runtestloop(session=session)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/hooks.py", line 286, in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/manager.py", line 93, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/manager.py", line 87, in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
res = hook_impl.function(*args)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/main.py", line 271, in pytest_runtestloop
item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/hooks.py", line 286, in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/manager.py", line 93, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/manager.py", line 87, in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
res = hook_impl.function(*args)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/runner.py", line 78, in pytest_runtest_protocol
runtestprotocol(item, nextitem=nextitem)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/runner.py", line 93, in runtestprotocol
reports.append(call_and_report(item, "call", log))
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/runner.py", line 173, in call_and_report
call = call_runtest_hook(item, when, **kwds)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/runner.py", line 198, in call_runtest_hook
lambda: ihook(item=item, **kwds), when=when, reraise=reraise
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/runner.py", line 226, in from_call
result = func()
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/runner.py", line 198, in <lambda>
lambda: ihook(item=item, **kwds), when=when, reraise=reraise
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/hooks.py", line 286, in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/manager.py", line 93, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/manager.py", line 87, in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
res = hook_impl.function(*args)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/runner.py", line 123, in pytest_runtest_call
item.runtest()
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/_pytest/python.py", line 1464, in runtest
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/hooks.py", line 286, in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/manager.py", line 93, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/manager.py", line 87, in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
res = hook_impl.function(*args)
File "/home/travis/virtualenv/python3.7-dev/lib/python3.7/site-packages/pytest_asyncio/plugin.py", line 158, in pytest_pyfunc_call
pyfuncitem.obj(**testargs), loop=event_loop))
File "/opt/python/3.7-dev/lib/python3.7/asyncio/base_events.py", line 574, in run_until_complete
self.run_forever()
File "/opt/python/3.7-dev/lib/python3.7/asyncio/base_events.py", line 541, in run_forever
self._run_once()
File "/opt/python/3.7-dev/lib/python3.7/asyncio/base_events.py", line 1778, in _run_once
handle._run()
File "/opt/python/3.7-dev/lib/python3.7/asyncio/events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "/home/travis/build/UAVCAN/pyuavcan/pyuavcan/presentation/_port/_subscriber.py", line 283, in _task_function
transfer = await self.transport_session.receive_until(self._loop.time() + _RECEIVE_TIMEOUT)
File "/home/travis/build/UAVCAN/pyuavcan/pyuavcan/transport/redundant/_session/_input.py", line 108, in receive_until
await self._receive_into_backlog(monotonic_deadline)
File "/home/travis/build/UAVCAN/pyuavcan/pyuavcan/transport/redundant/_session/_input.py", line 213, in _receive_into_backlog
pending = {self._loop.create_task(do_receive(if_idx, inf)) for if_idx, inf in enumerate(inferiors)}
File "/home/travis/build/UAVCAN/pyuavcan/pyuavcan/transport/redundant/_session/_input.py", line 213, in <setcomp>
pending = {self._loop.create_task(do_receive(if_idx, inf)) for if_idx, inf in enumerate(inferiors)}
task: <Task pending coro=<RedundantInputSession._receive_into_backlog.<locals>.do_receive() running at /home/travis/build/UAVCAN/pyuavcan/pyuavcan/transport/redundant/_session/_input.py:211> wait_for=<Future cancelled created at /opt/python/3.7-dev/lib/python3.7/asyncio/base_events.py:395> created at /home/travis/build/UAVCAN/pyuavcan/pyuavcan/transport/redundant/_session/_input.py:213>
Certain short-lived coroutines are not terminated properly. Upon canceling, a task needs another scheduling cycle to process
asyncio.CancelledError
. Search for the offenders in the test log byTask was destroyed but it is pending!
. Example: