Source: python-tornado, python-bonsai Control: found -1 python-tornado/6.2.0-1 Control: found -1 python-bonsai/1.3.0+ds-3 Severity: serious Tags: sid bookworm User: debian...@lists.debian.org Usertags: breaks needs-update
Dear maintainer(s),With a recent upload of python-tornado the autopkgtest of python-bonsai fails in testing when that autopkgtest is run with the binary packages of python-tornado from unstable. It passes when run with only packages from testing. In tabular form:
pass fail python-tornado from testing 6.2.0-1 python-bonsai from testing 1.3.0+ds-3 all others from testing from testing I copied some of the output at the bottom of this report.Currently this regression is blocking the migration of python-tornado to testing [1]. Due to the nature of this issue, I filed this bug report against both packages. Can you please investigate the situation and reassign the bug to the right package?
More information about this bug and the reason for filing it can be found on https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation Paul [1] https://qa.debian.org/excuses.php?package=python-tornado https://ci.debian.net/data/autopkgtest/testing/amd64/p/python-bonsai/24205871/log.gz=================================== FAILURES =================================== ________________ TornadoLDAPConnectionTest.test_add_and_delete _________________
self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_add_and_delete>
def tearDown(self) -> None: # Native coroutines tend to produce warnings if they're not # allowed to run to completion. It's difficult to ensure that # this always happens in tests, so cancel any tasks that are # still pending by the time we get here. asyncio_loop = self.io_loop.asyncio_loop # type: ignore if hasattr(asyncio, "all_tasks"): # py37 tasks = asyncio.all_tasks(asyncio_loop) # type: ignore else: tasks = asyncio.Task.all_tasks(asyncio_loop) # Tasks that are done may still appear here and may contain # non-cancellation exceptions, so filter them out. tasks = [t for t in tasks if not t.done()] # type: ignore for t in tasks: t.cancel() # Allow the tasks to run and finalize themselves (which means # raising a CancelledError inside the coroutine). This may # just transform the "task was destroyed but it is pending" # warning into a "uncaught CancelledError" warning, but # catching CancelledErrors in coroutines that may leak is # simpler than ensuring that no coroutines leak. if tasks:done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
assert not pending# If any task failed with anything but a CancelledError, raise it.
for f in done: try: f.result() except asyncio.CancelledError: pass # Clean up Subprocess, so it can be used again with a new ioloop. Subprocess.uninitialize() with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.io_loop.clear_current() if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS): # Try to clean up any file descriptors left open in the ioloop. # This avoids leaks, especially when tests are run repeatedly # in the same process with autoreload (because curl does not # set FD_CLOEXEC on its file descriptors) self.io_loop.close(all_fds=True) > if self.should_close_asyncio_loop:E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'
/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError__________________ TornadoLDAPConnectionTest.test_connection ___________________
self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_connection> def tearDown(self) -> None: # Native coroutines tend to produce warnings if they're not # allowed to run to completion. It's difficult to ensure that # this always happens in tests, so cancel any tasks that are # still pending by the time we get here. asyncio_loop = self.io_loop.asyncio_loop # type: ignore if hasattr(asyncio, "all_tasks"): # py37 tasks = asyncio.all_tasks(asyncio_loop) # type: ignore else: tasks = asyncio.Task.all_tasks(asyncio_loop) # Tasks that are done may still appear here and may contain # non-cancellation exceptions, so filter them out. tasks = [t for t in tasks if not t.done()] # type: ignore for t in tasks: t.cancel() # Allow the tasks to run and finalize themselves (which means # raising a CancelledError inside the coroutine). This may # just transform the "task was destroyed but it is pending" # warning into a "uncaught CancelledError" warning, but # catching CancelledErrors in coroutines that may leak is # simpler than ensuring that no coroutines leak. if tasks:done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
assert not pending# If any task failed with anything but a CancelledError, raise it.
for f in done: try: f.result() except asyncio.CancelledError: pass # Clean up Subprocess, so it can be used again with a new ioloop. Subprocess.uninitialize() with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.io_loop.clear_current() if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS): # Try to clean up any file descriptors left open in the ioloop. # This avoids leaks, especially when tests are run repeatedly # in the same process with autoreload (because curl does not # set FD_CLOEXEC on its file descriptors) self.io_loop.close(all_fds=True) > if self.should_close_asyncio_loop:E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'
/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError_______________ TornadoLDAPConnectionTest.test_modify_and_rename _______________
self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_modify_and_rename>
def tearDown(self) -> None: # Native coroutines tend to produce warnings if they're not # allowed to run to completion. It's difficult to ensure that # this always happens in tests, so cancel any tasks that are # still pending by the time we get here. asyncio_loop = self.io_loop.asyncio_loop # type: ignore if hasattr(asyncio, "all_tasks"): # py37 tasks = asyncio.all_tasks(asyncio_loop) # type: ignore else: tasks = asyncio.Task.all_tasks(asyncio_loop) # Tasks that are done may still appear here and may contain # non-cancellation exceptions, so filter them out. tasks = [t for t in tasks if not t.done()] # type: ignore for t in tasks: t.cancel() # Allow the tasks to run and finalize themselves (which means # raising a CancelledError inside the coroutine). This may # just transform the "task was destroyed but it is pending" # warning into a "uncaught CancelledError" warning, but # catching CancelledErrors in coroutines that may leak is # simpler than ensuring that no coroutines leak. if tasks:done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
assert not pending# If any task failed with anything but a CancelledError, raise it.
for f in done: try: f.result() except asyncio.CancelledError: pass # Clean up Subprocess, so it can be used again with a new ioloop. Subprocess.uninitialize() with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.io_loop.clear_current() if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS): # Try to clean up any file descriptors left open in the ioloop. # This avoids leaks, especially when tests are run repeatedly # in the same process with autoreload (because curl does not # set FD_CLOEXEC on its file descriptors) self.io_loop.close(all_fds=True) > if self.should_close_asyncio_loop:E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'
/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError____________________ TornadoLDAPConnectionTest.test_obj_err ____________________
self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_obj_err> def tearDown(self) -> None: # Native coroutines tend to produce warnings if they're not # allowed to run to completion. It's difficult to ensure that # this always happens in tests, so cancel any tasks that are # still pending by the time we get here. asyncio_loop = self.io_loop.asyncio_loop # type: ignore if hasattr(asyncio, "all_tasks"): # py37 tasks = asyncio.all_tasks(asyncio_loop) # type: ignore else: tasks = asyncio.Task.all_tasks(asyncio_loop) # Tasks that are done may still appear here and may contain # non-cancellation exceptions, so filter them out. tasks = [t for t in tasks if not t.done()] # type: ignore for t in tasks: t.cancel() # Allow the tasks to run and finalize themselves (which means # raising a CancelledError inside the coroutine). This may # just transform the "task was destroyed but it is pending" # warning into a "uncaught CancelledError" warning, but # catching CancelledErrors in coroutines that may leak is # simpler than ensuring that no coroutines leak. if tasks:done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
assert not pending# If any task failed with anything but a CancelledError, raise it.
for f in done: try: f.result() except asyncio.CancelledError: pass # Clean up Subprocess, so it can be used again with a new ioloop. Subprocess.uninitialize() with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.io_loop.clear_current() if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS): # Try to clean up any file descriptors left open in the ioloop. # This avoids leaks, especially when tests are run repeatedly # in the same process with autoreload (because curl does not # set FD_CLOEXEC on its file descriptors) self.io_loop.close(all_fds=True) > if self.should_close_asyncio_loop:E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'
/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError_________________ TornadoLDAPConnectionTest.test_paged_search __________________
self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_paged_search> def tearDown(self) -> None: # Native coroutines tend to produce warnings if they're not # allowed to run to completion. It's difficult to ensure that # this always happens in tests, so cancel any tasks that are # still pending by the time we get here. asyncio_loop = self.io_loop.asyncio_loop # type: ignore if hasattr(asyncio, "all_tasks"): # py37 tasks = asyncio.all_tasks(asyncio_loop) # type: ignore else: tasks = asyncio.Task.all_tasks(asyncio_loop) # Tasks that are done may still appear here and may contain # non-cancellation exceptions, so filter them out. tasks = [t for t in tasks if not t.done()] # type: ignore for t in tasks: t.cancel() # Allow the tasks to run and finalize themselves (which means # raising a CancelledError inside the coroutine). This may # just transform the "task was destroyed but it is pending" # warning into a "uncaught CancelledError" warning, but # catching CancelledErrors in coroutines that may leak is # simpler than ensuring that no coroutines leak. if tasks:done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
assert not pending# If any task failed with anything but a CancelledError, raise it.
for f in done: try: f.result() except asyncio.CancelledError: pass # Clean up Subprocess, so it can be used again with a new ioloop. Subprocess.uninitialize() with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.io_loop.clear_current() if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS): # Try to clean up any file descriptors left open in the ioloop. # This avoids leaks, especially when tests are run repeatedly # in the same process with autoreload (because curl does not # set FD_CLOEXEC on its file descriptors) self.io_loop.close(all_fds=True) > if self.should_close_asyncio_loop:E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'
/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError__________ TornadoLDAPConnectionTest.test_paged_search_with_auto_acq ___________
self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_paged_search_with_auto_acq>
def tearDown(self) -> None: # Native coroutines tend to produce warnings if they're not # allowed to run to completion. It's difficult to ensure that # this always happens in tests, so cancel any tasks that are # still pending by the time we get here. asyncio_loop = self.io_loop.asyncio_loop # type: ignore if hasattr(asyncio, "all_tasks"): # py37 tasks = asyncio.all_tasks(asyncio_loop) # type: ignore else: tasks = asyncio.Task.all_tasks(asyncio_loop) # Tasks that are done may still appear here and may contain # non-cancellation exceptions, so filter them out. tasks = [t for t in tasks if not t.done()] # type: ignore for t in tasks: t.cancel() # Allow the tasks to run and finalize themselves (which means # raising a CancelledError inside the coroutine). This may # just transform the "task was destroyed but it is pending" # warning into a "uncaught CancelledError" warning, but # catching CancelledErrors in coroutines that may leak is # simpler than ensuring that no coroutines leak. if tasks:done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
assert not pending# If any task failed with anything but a CancelledError, raise it.
for f in done: try: f.result() except asyncio.CancelledError: pass # Clean up Subprocess, so it can be used again with a new ioloop. Subprocess.uninitialize() with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.io_loop.clear_current() if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS): # Try to clean up any file descriptors left open in the ioloop. # This avoids leaks, especially when tests are run repeatedly # in the same process with autoreload (because curl does not # set FD_CLOEXEC on its file descriptors) self.io_loop.close(all_fds=True) > if self.should_close_asyncio_loop:E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'
/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError_______________ TornadoLDAPConnectionTest.test_recursive_delete ________________
self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_recursive_delete>
def tearDown(self) -> None: # Native coroutines tend to produce warnings if they're not # allowed to run to completion. It's difficult to ensure that # this always happens in tests, so cancel any tasks that are # still pending by the time we get here. asyncio_loop = self.io_loop.asyncio_loop # type: ignore if hasattr(asyncio, "all_tasks"): # py37 tasks = asyncio.all_tasks(asyncio_loop) # type: ignore else: tasks = asyncio.Task.all_tasks(asyncio_loop) # Tasks that are done may still appear here and may contain # non-cancellation exceptions, so filter them out. tasks = [t for t in tasks if not t.done()] # type: ignore for t in tasks: t.cancel() # Allow the tasks to run and finalize themselves (which means # raising a CancelledError inside the coroutine). This may # just transform the "task was destroyed but it is pending" # warning into a "uncaught CancelledError" warning, but # catching CancelledErrors in coroutines that may leak is # simpler than ensuring that no coroutines leak. if tasks:done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
assert not pending# If any task failed with anything but a CancelledError, raise it.
for f in done: try: f.result() except asyncio.CancelledError: pass # Clean up Subprocess, so it can be used again with a new ioloop. Subprocess.uninitialize() with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.io_loop.clear_current() if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS): # Try to clean up any file descriptors left open in the ioloop. # This avoids leaks, especially when tests are run repeatedly # in the same process with autoreload (because curl does not # set FD_CLOEXEC on its file descriptors) self.io_loop.close(all_fds=True) > if self.should_close_asyncio_loop:E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'
/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError____________________ TornadoLDAPConnectionTest.test_search _____________________
self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_search> def tearDown(self) -> None: # Native coroutines tend to produce warnings if they're not # allowed to run to completion. It's difficult to ensure that # this always happens in tests, so cancel any tasks that are # still pending by the time we get here. asyncio_loop = self.io_loop.asyncio_loop # type: ignore if hasattr(asyncio, "all_tasks"): # py37 tasks = asyncio.all_tasks(asyncio_loop) # type: ignore else: tasks = asyncio.Task.all_tasks(asyncio_loop) # Tasks that are done may still appear here and may contain # non-cancellation exceptions, so filter them out. tasks = [t for t in tasks if not t.done()] # type: ignore for t in tasks: t.cancel() # Allow the tasks to run and finalize themselves (which means # raising a CancelledError inside the coroutine). This may # just transform the "task was destroyed but it is pending" # warning into a "uncaught CancelledError" warning, but # catching CancelledErrors in coroutines that may leak is # simpler than ensuring that no coroutines leak. if tasks:done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
assert not pending# If any task failed with anything but a CancelledError, raise it.
for f in done: try: f.result() except asyncio.CancelledError: pass # Clean up Subprocess, so it can be used again with a new ioloop. Subprocess.uninitialize() with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.io_loop.clear_current() if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS): # Try to clean up any file descriptors left open in the ioloop. # This avoids leaks, especially when tests are run repeatedly # in the same process with autoreload (because curl does not # set FD_CLOEXEC on its file descriptors) self.io_loop.close(all_fds=True) > if self.should_close_asyncio_loop:E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'
/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError____________________ TornadoLDAPConnectionTest.test_whoami _____________________
self = <test_tornado.TornadoLDAPConnectionTest testMethod=test_whoami> def tearDown(self) -> None: # Native coroutines tend to produce warnings if they're not # allowed to run to completion. It's difficult to ensure that # this always happens in tests, so cancel any tasks that are # still pending by the time we get here. asyncio_loop = self.io_loop.asyncio_loop # type: ignore if hasattr(asyncio, "all_tasks"): # py37 tasks = asyncio.all_tasks(asyncio_loop) # type: ignore else: tasks = asyncio.Task.all_tasks(asyncio_loop) # Tasks that are done may still appear here and may contain # non-cancellation exceptions, so filter them out. tasks = [t for t in tasks if not t.done()] # type: ignore for t in tasks: t.cancel() # Allow the tasks to run and finalize themselves (which means # raising a CancelledError inside the coroutine). This may # just transform the "task was destroyed but it is pending" # warning into a "uncaught CancelledError" warning, but # catching CancelledErrors in coroutines that may leak is # simpler than ensuring that no coroutines leak. if tasks:done, pending = self.io_loop.run_sync(lambda: asyncio.wait(tasks))
assert not pending# If any task failed with anything but a CancelledError, raise it.
for f in done: try: f.result() except asyncio.CancelledError: pass # Clean up Subprocess, so it can be used again with a new ioloop. Subprocess.uninitialize() with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) self.io_loop.clear_current() if not isinstance(self.io_loop, _NON_OWNED_IOLOOPS): # Try to clean up any file descriptors left open in the ioloop. # This avoids leaks, especially when tests are run repeatedly # in the same process with autoreload (because curl does not # set FD_CLOEXEC on its file descriptors) self.io_loop.close(all_fds=True) > if self.should_close_asyncio_loop:E AttributeError: 'TornadoLDAPConnectionTest' object has no attribute 'should_close_asyncio_loop'
/usr/lib/python3/dist-packages/tornado/testing.py:282: AttributeError
OpenPGP_signature
Description: OpenPGP digital signature