tornadoweb / tornado

Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed.
http://www.tornadoweb.org/
Apache License 2.0
21.76k stars 5.51k forks source link

6.4.1: pytest fails in multiple nits with `AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop'` error #3390

Closed kloczek closed 4 months ago

kloczek commented 5 months ago

I'm packaging your module as an rpm package so I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

pytest shows as well some PytestCollectionWarning warnings.

Please let me know if you need more details or want me to perform some diagnostics.

kloczek commented 5 months ago
Here is pytest output: ```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib/python3.10/site-packages + /usr/bin/pytest -ra -m 'not network' --import-mode=importlib --ignore maint/test/cython/cythonapp_test.py --ignore maint/test/redbot/red_test.py ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.10.14, pytest-8.2.2, pluggy-1.5.0 benchmark: 4.0.0 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000) rootdir: /home/tkloczko/rpmbuild/BUILD/tornado-6.4.1 configfile: pyproject.toml plugins: asyncio-0.23.7, pytest_httpserver-1.0.10, benchmark-4.0.0, timeout-2.3.1 asyncio: mode=strict collected 1262 items tornado/test/asyncio_test.py ............ [ 0%] tornado/test/auth_test.py ................... [ 2%] tornado/test/autoreload_test.py .... [ 2%] tornado/test/circlerefs_test.py ...... [ 3%] tornado/test/concurrent_test.py ......... [ 3%] tornado/test/curl_httpclient_test.py sssssssssssssssssssssssssssssssssssssssssss [ 7%] tornado/test/escape_test.py ........... [ 8%] tornado/test/gen_test.py ........................................................................ [ 13%] tornado/test/http1connection_test.py . [ 14%] tornado/test/httpclient_test.py ........................................................... [ 18%] tornado/test/httpserver_test.py ................................................................................. [ 25%] tornado/test/httputil_test.py ............................................... [ 28%] tornado/test/import_test.py ... [ 29%] tornado/test/ioloop_test.py ..................................................... [ 33%] tornado/test/iostream_test.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.......................................................................................... [ 45%] .................................................... [ 49%] tornado/test/locale_test.py ........ [ 50%] tornado/test/locks_test.py ........................................ [ 53%] tornado/test/log_test.py ............... [ 54%] tornado/test/netutil_test.py .......ss... [ 55%] tornado/test/options_test.py ........................ [ 57%] tornado/test/process_test.py ......... [ 57%] tornado/test/queues_test.py ......................................... [ 61%] tornado/test/routing_test.py ...... [ 61%] tornado/test/simple_httpclient_test.py ............................................................................................................... [ 70%] tornado/test/tcpclient_test.py .............................. [ 72%] tornado/test/tcpserver_test.py ........ [ 73%] tornado/test/template_test.py ...............s........................... [ 76%] tornado/test/testing_test.py ..................... [ 78%] tornado/test/twisted_test.py ss [ 78%] tornado/test/util_test.py .........s........... [ 80%] tornado/test/web_test.py ..................................................................................................................s......................................... [ 92%] ..................................... [ 95%] tornado/test/websocket_test.py ................................................. [ 99%] tornado/test/wsgi_test.py ...... [100%] ========================================================================================= FAILURES ========================================================================================== ________________________________________________________________________ TestIOStreamWebMixin.test_connection_closed ________________________________________________________________________ self = def test_connection_closed(self: typing.Any): # When a server sends a response and then closes the connection, # the client must be allowed to read the data before the IOStream # closes itself. Epoll reports closed connections with a separate # EPOLLRDHUP event delivered at the same time as the read event, # while kqueue reports them as a second read/write event with an EOF # flag. > response = self.fetch("/", headers={"Connection": "close"}) E AttributeError: 'TestIOStreamWebMixin' object has no attribute 'fetch' tornado/test/iostream_test.py:73: AttributeError ________________________________________________________________________ TestIOStreamWebMixin.test_read_until_close _________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________________ TestIOStreamWebMixin.test_read_zero_bytes _________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _____________________________________________________________________ TestIOStreamWebMixin.test_write_while_connecting ______________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ________________________________________________________________________ TestIOStreamWebMixin.test_future_interface _________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ___________________________________________________________________ TestIOStreamWebMixin.test_future_close_while_reading ____________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _____________________________________________________________________ TestIOStreamWebMixin.test_future_read_until_close _____________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________________ TestReadWriteMixin.test_write_zero_bytes __________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ___________________________________________________________________ TestReadWriteMixin.test_future_delayed_close_callback ___________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ________________________________________________________________________ TestReadWriteMixin.test_close_buffered_data ________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ___________________________________________________________________ TestReadWriteMixin.test_read_until_close_after_close ____________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________________ TestReadWriteMixin.test_large_read_until __________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _____________________________________________________________ TestReadWriteMixin.test_read_until_with_close_after_second_packet _____________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ________________________________________________________________ TestReadWriteMixin.test_read_until_unsatisfied_after_close _________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________ TestReadWriteMixin.test_close_callback_with_pending_read __________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _______________________________________________________________________ TestReadWriteMixin.test_future_close_callback _______________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________________ TestReadWriteMixin.test_write_memoryview __________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ________________________________________________________________________ TestReadWriteMixin.test_read_bytes_partial _________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _______________________________________________________________________ TestReadWriteMixin.test_read_until_max_bytes ________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ____________________________________________________________________ TestReadWriteMixin.test_read_until_max_bytes_inline ____________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ________________________________________________________________ TestReadWriteMixin.test_read_until_max_bytes_ignores_extra _________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ____________________________________________________________________ TestReadWriteMixin.test_read_until_regex_max_bytes _____________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________ TestReadWriteMixin.test_read_until_regex_max_bytes_inline _________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _____________________________________________________________ TestReadWriteMixin.test_read_until_regex_max_bytes_ignores_extra ______________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ___________________________________________________________________ TestReadWriteMixin.test_small_reads_from_large_buffer ___________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ________________________________________________________________ TestReadWriteMixin.test_small_read_untils_from_large_buffer ________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ___________________________________________________________________________ TestReadWriteMixin.test_flow_control ____________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _____________________________________________________________________________ TestReadWriteMixin.test_read_into _____________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________________ TestReadWriteMixin.test_read_into_partial _________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _______________________________________________________________________ TestReadWriteMixin.test_read_into_zero_bytes ________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________________ TestReadWriteMixin.test_many_mixed_reads __________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError __________________________________________________________________________ TestIOStreamMixin.test_write_zero_bytes __________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ___________________________________________________________________ TestIOStreamMixin.test_future_delayed_close_callback ____________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ________________________________________________________________________ TestIOStreamMixin.test_close_buffered_data _________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ____________________________________________________________________ TestIOStreamMixin.test_read_until_close_after_close ____________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError __________________________________________________________________________ TestIOStreamMixin.test_large_read_until __________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _____________________________________________________________ TestIOStreamMixin.test_read_until_with_close_after_second_packet ______________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________ TestIOStreamMixin.test_read_until_unsatisfied_after_close _________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError __________________________________________________________________ TestIOStreamMixin.test_close_callback_with_pending_read __________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _______________________________________________________________________ TestIOStreamMixin.test_future_close_callback ________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError __________________________________________________________________________ TestIOStreamMixin.test_write_memoryview __________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________________ TestIOStreamMixin.test_read_bytes_partial _________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ________________________________________________________________________ TestIOStreamMixin.test_read_until_max_bytes ________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ____________________________________________________________________ TestIOStreamMixin.test_read_until_max_bytes_inline _____________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________ TestIOStreamMixin.test_read_until_max_bytes_ignores_extra _________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _____________________________________________________________________ TestIOStreamMixin.test_read_until_regex_max_bytes _____________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________ TestIOStreamMixin.test_read_until_regex_max_bytes_inline __________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ______________________________________________________________ TestIOStreamMixin.test_read_until_regex_max_bytes_ignores_extra ______________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ___________________________________________________________________ TestIOStreamMixin.test_small_reads_from_large_buffer ____________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ________________________________________________________________ TestIOStreamMixin.test_small_read_untils_from_large_buffer _________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ____________________________________________________________________________ TestIOStreamMixin.test_flow_control ____________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _____________________________________________________________________________ TestIOStreamMixin.test_read_into ______________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________________ TestIOStreamMixin.test_read_into_partial __________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ________________________________________________________________________ TestIOStreamMixin.test_read_into_zero_bytes ________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError __________________________________________________________________________ TestIOStreamMixin.test_many_mixed_reads __________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________________ TestIOStreamMixin.test_connection_refused _________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ______________________________________________________________________________ TestIOStreamMixin.test_gaierror ______________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ____________________________________________________________________ TestIOStreamMixin.test_read_until_close_with_error _____________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError _________________________________________________________________________ TestIOStreamMixin.test_inline_read_error __________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ______________________________________________________________________ TestIOStreamMixin.test_async_read_error_logging ______________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ____________________________________________________________________________ TestIOStreamMixin.test_future_write ____________________________________________________________________________ self = , args = (), kwargs = {} @functools.wraps(coro) def post_coroutine(self, *args, **kwargs): # type: (AsyncTestCase, *Any, **Any) -> None try: > return self.io_loop.run_sync( functools.partial(coro, self, *args, **kwargs), timeout=timeout ) E AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ../../BUILDROOT/python-tornado-6.4.1-2.fc37.x86_64/usr/lib64/python3.10/site-packages/tornado/testing.py:604: AttributeError ===================================================================================== warnings summary ====================================================================================== tornado/test/tcpclient_test.py:41 /home/tkloczko/rpmbuild/BUILD/tornado-6.4.1/tornado/test/tcpclient_test.py:41: PytestCollectionWarning: cannot collect test class 'TestTCPServer' because it has a __init__ constructor (from: tornado/test/tcpclient_test.py) class TestTCPServer(TCPServer): tornado/test/util_test.py:48 /home/tkloczko/rpmbuild/BUILD/tornado-6.4.1/tornado/test/util_test.py:48: PytestCollectionWarning: cannot collect test class 'TestConfigurable' because it has a __new__ constructor (from: tornado/test/util_test.py) class TestConfigurable(Configurable): tornado/test/util_test.py:58 /home/tkloczko/rpmbuild/BUILD/tornado-6.4.1/tornado/test/util_test.py:58: PytestCollectionWarning: cannot collect test class 'TestConfig1' because it has a __new__ constructor (from: tornado/test/util_test.py) class TestConfig1(TestConfigurable): tornado/test/util_test.py:64 /home/tkloczko/rpmbuild/BUILD/tornado-6.4.1/tornado/test/util_test.py:64: PytestCollectionWarning: cannot collect test class 'TestConfig2' because it has a __new__ constructor (from: tornado/test/util_test.py) class TestConfig2(TestConfigurable): tornado/test/util_test.py:70 /home/tkloczko/rpmbuild/BUILD/tornado-6.4.1/tornado/test/util_test.py:70: PytestCollectionWarning: cannot collect test class 'TestConfig3' because it has a __new__ constructor (from: tornado/test/util_test.py) class TestConfig3(TestConfigurable): tornado/test/util_test.py:81 /home/tkloczko/rpmbuild/BUILD/tornado-6.4.1/tornado/test/util_test.py:81: PytestCollectionWarning: cannot collect test class 'TestConfig3A' because it has a __new__ constructor (from: tornado/test/util_test.py) class TestConfig3A(TestConfig3): tornado/test/util_test.py:86 /home/tkloczko/rpmbuild/BUILD/tornado-6.4.1/tornado/test/util_test.py:86: PytestCollectionWarning: cannot collect test class 'TestConfig3B' because it has a __new__ constructor (from: tornado/test/util_test.py) class TestConfig3B(TestConfig3): tornado/test/websocket_test.py:44 /home/tkloczko/rpmbuild/BUILD/tornado-6.4.1/tornado/test/websocket_test.py:44: PytestCollectionWarning: cannot collect test class 'TestWebSocketHandler' because it has a __init__ constructor (from: tornado/test/websocket_test.py) class TestWebSocketHandler(WebSocketHandler): -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ================================================================================== short test summary info ================================================================================== SKIPPED [1] tornado/test/httpclient_test.py:556: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:611: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:265: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:274: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:285: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:599: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:382: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:625: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:219: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:228: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:486: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:377: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:714: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:314: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:570: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:579: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:565: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:425: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:455: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:728: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:546: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:497: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:194: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:442: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:347: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:514: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:680: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:188: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:214: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:673: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:332: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:338: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:324: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:686: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:586: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:206: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:418: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:300: pycurl module not present SKIPPED [1] tornado/test/httpclient_test.py:704: pycurl module not present SKIPPED [1] tornado/test/curl_httpclient_test.py:114: pycurl module not present SKIPPED [1] tornado/test/curl_httpclient_test.py:108: pycurl module not present SKIPPED [1] tornado/test/curl_httpclient_test.py:122: pycurl module not present SKIPPED [1] tornado/test/curl_httpclient_test.py:118: pycurl module not present SKIPPED [1] tornado/test/netutil_test.py:44: pycares module not present SKIPPED [1] tornado/test/netutil_test.py:44: twisted module not present SKIPPED [1] tornado/test/template_test.py:184: no testable future imports SKIPPED [1] tornado/test/twisted_test.py:51: twisted module not present SKIPPED [1] tornado/test/twisted_test.py:38: twisted module not present SKIPPED [1] tornado/test/util_test.py:223: no testable future imports SKIPPED [1] tornado/test/web_test.py:2119: needs fix FAILED tornado/test/iostream_test.py::TestIOStreamWebMixin::test_connection_closed - AttributeError: 'TestIOStreamWebMixin' object has no attribute 'fetch' FAILED tornado/test/iostream_test.py::TestIOStreamWebMixin::test_read_until_close - AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamWebMixin::test_read_zero_bytes - AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamWebMixin::test_write_while_connecting - AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamWebMixin::test_future_interface - AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamWebMixin::test_future_close_while_reading - AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamWebMixin::test_future_read_until_close - AttributeError: 'TestIOStreamWebMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_write_zero_bytes - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_future_delayed_close_callback - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_close_buffered_data - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_until_close_after_close - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_large_read_until - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_until_with_close_after_second_packet - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_until_unsatisfied_after_close - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_close_callback_with_pending_read - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_future_close_callback - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_write_memoryview - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_bytes_partial - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_until_max_bytes - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_until_max_bytes_inline - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_until_max_bytes_ignores_extra - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_until_regex_max_bytes - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_until_regex_max_bytes_inline - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_until_regex_max_bytes_ignores_extra - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_small_reads_from_large_buffer - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_small_read_untils_from_large_buffer - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_flow_control - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_into - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_into_partial - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_read_into_zero_bytes - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestReadWriteMixin::test_many_mixed_reads - AttributeError: 'TestReadWriteMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_write_zero_bytes - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_future_delayed_close_callback - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_close_buffered_data - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_until_close_after_close - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_large_read_until - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_until_with_close_after_second_packet - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_until_unsatisfied_after_close - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_close_callback_with_pending_read - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_future_close_callback - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_write_memoryview - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_bytes_partial - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_until_max_bytes - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_until_max_bytes_inline - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_until_max_bytes_ignores_extra - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_until_regex_max_bytes - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_until_regex_max_bytes_inline - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_until_regex_max_bytes_ignores_extra - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_small_reads_from_large_buffer - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_small_read_untils_from_large_buffer - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_flow_control - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_into - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_into_partial - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_into_zero_bytes - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_many_mixed_reads - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_connection_refused - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_gaierror - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_read_until_close_with_error - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_inline_read_error - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_async_read_error_logging - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' FAILED tornado/test/iostream_test.py::TestIOStreamMixin::test_future_write - AttributeError: 'TestIOStreamMixin' object has no attribute 'io_loop' ================================================================= 61 failed, 1151 passed, 50 skipped, 8 warnings in 25.84s ================================================================== ```
List of installed modules in build env: ```console Package Version ------------------ ----------- attrs 23.2.0 build 1.2.1 cffi 1.16.0 cryptography 42.0.8 exceptiongroup 1.1.3 importlib_metadata 7.1.0 iniconfig 2.0.0 installer 0.7.0 packaging 24.0 pluggy 1.5.0 ply 3.11 pyasn1 0.6.0 pyasn1_modules 0.4.0 pycparser 2.22 pyproject_hooks 1.0.0 pytest 8.2.2 python-dateutil 2.9.0.post0 service-identity 24.1.0 setuptools 69.4.0 tokenize_rt 5.2.0 tomli 2.0.1 wheel 0.43.0 zipp 3.19.2 ```
bdarnell commented 5 months ago

Pytest is not a supported way to run Tornado's test suite. My preferred way to run the tests is with python -m tornado.test; it also works with python -m unittest discover (with some additional args I can't remember).

Duplicate of #3095. If someone who cares about pytest wants to figure out what's going on and submit a PR to make it possible to use pytest as a test runner for tornado, I'd consider it, but I don't use pytest myself.

bdarnell commented 4 months ago

3413 fixes all the mixin-related errors. There are still some PytestCollectionWarnings, but they're harmless - they come from the fact that pytest looks for anything with "test" in its name instead of looking at the type like standard unittest discovery. So I think it's possible to run tornado's tests in pytest now if that's something you want to do. (but the unittest module will remain the "official" way to run tornado's tests)