From 20917c65672433586779c2a11be5715b9722538a Mon Sep 17 00:00:00 2001 From: Marcel Telka Date: Fri, 15 Nov 2024 15:57:56 +0100 Subject: [PATCH] python/aiohttp: update to 3.11.2 --- components/python/aiohttp/.gitignore | 2 +- components/python/aiohttp/Makefile | 15 +- components/python/aiohttp/aiohttp-PYVER.p5m | 24 +- .../python/aiohttp/manifests/sample-manifest.p5m | 24 +- .../aiohttp/patches/02-requirements-path.patch | 11 +- .../aiohttp/patches/06-remove-test-reqs.patch | 14 +- components/python/aiohttp/pkg5 | 1 + .../python/aiohttp/python-integrate-project.conf | 8 + components/python/aiohttp/test/results-all.master | 5080 ++++++++++---------- 9 files changed, 2636 insertions(+), 2543 deletions(-) diff --git a/components/python/aiohttp/.gitignore b/components/python/aiohttp/.gitignore index 2d2ae913a5..fe2eff3290 100644 --- a/components/python/aiohttp/.gitignore +++ b/components/python/aiohttp/.gitignore @@ -1 +1 @@ -/aiohttp-3.10.10/ +/aiohttp-3.11.2/ diff --git a/components/python/aiohttp/Makefile b/components/python/aiohttp/Makefile index aae811e11a..e75cde02dd 100644 --- a/components/python/aiohttp/Makefile +++ b/components/python/aiohttp/Makefile @@ -19,11 +19,11 @@ BUILD_STYLE = pyproject include ../../../make-rules/shared-macros.mk COMPONENT_NAME = aiohttp -HUMAN_VERSION = 3.10.10 +HUMAN_VERSION = 3.11.2 COMPONENT_SUMMARY = Async http client/server framework (asyncio) COMPONENT_PROJECT_URL = https://github.com/aio-libs/aiohttp COMPONENT_ARCHIVE_HASH = \ - sha256:0631dd7c9f0822cc61c88586ca76d5b5ada26538097d0f1df510b082bad3411a + sha256:68d1f46f9387db3785508f5225d3acbc5825ca13d9c29f2b5cce203d5863eb79 COMPONENT_LICENSE = Apache-2.0 COMPONENT_LICENSE_FILE = LICENSE.txt @@ -61,6 +61,14 @@ COMPONENT_POST_TEST_ACTION += $(MV) $(@D)/aiohttp-RENAMED $(@D)/aiohttp ; PYTEST_ADDOPTS += --ignore tests/test_proxy_functional.py # We have no python-on-whales packaged yet. PYTEST_ADDOPTS += --ignore tests/autobahn/test_autobahn.py +# We have no pytest_codspeed packaged yet so we cannot run benchmark tests. +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_cookiejar.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_client_request.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_http_writer.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_http_websocket.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_client.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_client_ws.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_web_middleware.py # Random directory name COMPONENT_TEST_TRANSFORMS += "-e 's|/tmp/.*/garbage[^/]*|\$$(TMPDIR)|'" @@ -72,6 +80,7 @@ PYTHON_REQUIRED_PACKAGES += library/python/async-timeout PYTHON_REQUIRED_PACKAGES += library/python/attrs PYTHON_REQUIRED_PACKAGES += library/python/frozenlist PYTHON_REQUIRED_PACKAGES += library/python/multidict +PYTHON_REQUIRED_PACKAGES += library/python/propcache PYTHON_REQUIRED_PACKAGES += library/python/setuptools PYTHON_REQUIRED_PACKAGES += library/python/yarl PYTHON_REQUIRED_PACKAGES += runtime/python @@ -87,9 +96,11 @@ TEST_REQUIRED_PACKAGES.python += library/python/frozenlist TEST_REQUIRED_PACKAGES.python += library/python/gunicorn TEST_REQUIRED_PACKAGES.python += library/python/multidict TEST_REQUIRED_PACKAGES.python += library/python/mypy +TEST_REQUIRED_PACKAGES.python += library/python/propcache TEST_REQUIRED_PACKAGES.python += library/python/pytest TEST_REQUIRED_PACKAGES.python += library/python/pytest-cov TEST_REQUIRED_PACKAGES.python += library/python/pytest-mock +TEST_REQUIRED_PACKAGES.python += library/python/pytest-xdist TEST_REQUIRED_PACKAGES.python += library/python/re-assert TEST_REQUIRED_PACKAGES.python += library/python/trustme TEST_REQUIRED_PACKAGES.python += library/python/yarl diff --git a/components/python/aiohttp/aiohttp-PYVER.p5m b/components/python/aiohttp/aiohttp-PYVER.p5m index 6cd0345cf4..aa39d48e6d 100644 --- a/components/python/aiohttp/aiohttp-PYVER.p5m +++ b/components/python/aiohttp/aiohttp-PYVER.p5m @@ -29,25 +29,32 @@ file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp-$(HUMAN_VERSION).dist-i file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp-$(HUMAN_VERSION).dist-info/top_level.txt file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_cparser.pxd.hash file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_find_header.pxd.hash -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_helpers.pyi.hash -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_helpers.pyx.hash file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_http_parser.pyx.hash file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_http_writer.pyx.hash -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_websocket.pyx.hash file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/hdrs.py.hash file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/__init__.py file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_cparser.pxd file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_find_header.pxd file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_headers.pxi -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_helpers.cpython-$(PYV).so -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_helpers.pyi -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_helpers.pyx file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_http_parser.cpython-$(PYV).so file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_http_parser.pyx file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_http_writer.cpython-$(PYV).so file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_http_writer.pyx -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket.cpython-$(PYV).so -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket.pyx +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/.hash/mask.pxd.hash +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/.hash/mask.pyx.hash +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/.hash/reader_c.pxd.hash +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/helpers.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/mask.cpython-$(PYV).so +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/mask.pxd +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/mask.pyx +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/models.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/reader.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/reader_c.cpython-$(PYV).so +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/reader_c.pxd +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/reader_c.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/reader_py.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/writer.py file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/abc.py file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/base_protocol.py file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/client.py @@ -105,4 +112,5 @@ depend type=require fmri=pkg:/library/python/async-timeout-$(PYV) depend type=require fmri=pkg:/library/python/attrs-$(PYV) depend type=require fmri=pkg:/library/python/frozenlist-$(PYV) depend type=require fmri=pkg:/library/python/multidict-$(PYV) +depend type=require fmri=pkg:/library/python/propcache-$(PYV) depend type=require fmri=pkg:/library/python/yarl-$(PYV) diff --git a/components/python/aiohttp/manifests/sample-manifest.p5m b/components/python/aiohttp/manifests/sample-manifest.p5m index 30dba30d16..c9ceb18c43 100644 --- a/components/python/aiohttp/manifests/sample-manifest.p5m +++ b/components/python/aiohttp/manifests/sample-manifest.p5m @@ -29,25 +29,32 @@ file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp-$(HUMAN_VERSION).dist-i file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp-$(HUMAN_VERSION).dist-info/top_level.txt file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_cparser.pxd.hash file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_find_header.pxd.hash -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_helpers.pyi.hash -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_helpers.pyx.hash file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_http_parser.pyx.hash file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_http_writer.pyx.hash -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/_websocket.pyx.hash file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/.hash/hdrs.py.hash file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/__init__.py file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_cparser.pxd file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_find_header.pxd file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_headers.pxi -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_helpers.cpython-$(PYV).so -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_helpers.pyi -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_helpers.pyx file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_http_parser.cpython-$(PYV).so file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_http_parser.pyx file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_http_writer.cpython-$(PYV).so file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_http_writer.pyx -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket.cpython-$(PYV).so -file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket.pyx +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/.hash/mask.pxd.hash +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/.hash/mask.pyx.hash +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/.hash/reader_c.pxd.hash +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/__init__.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/helpers.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/mask.cpython-$(PYV).so +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/mask.pxd +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/mask.pyx +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/models.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/reader.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/reader_c.cpython-$(PYV).so +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/reader_c.pxd +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/reader_c.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/reader_py.py +file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/_websocket/writer.py file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/abc.py file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/base_protocol.py file path=usr/lib/python$(PYVER)/vendor-packages/aiohttp/client.py @@ -105,4 +112,5 @@ depend type=require fmri=pkg:/library/python/async-timeout-$(PYV) depend type=require fmri=pkg:/library/python/attrs-$(PYV) depend type=require fmri=pkg:/library/python/frozenlist-$(PYV) depend type=require fmri=pkg:/library/python/multidict-$(PYV) +depend type=require fmri=pkg:/library/python/propcache-$(PYV) depend type=require fmri=pkg:/library/python/yarl-$(PYV) diff --git a/components/python/aiohttp/patches/02-requirements-path.patch b/components/python/aiohttp/patches/02-requirements-path.patch index d22402dfad..bc95b171db 100644 --- a/components/python/aiohttp/patches/02-requirements-path.patch +++ b/components/python/aiohttp/patches/02-requirements-path.patch @@ -1,14 +1,13 @@ ---- aiohttp-3.10.10/requirements/test.in.orig -+++ aiohttp-3.10.10/requirements/test.in -@@ -1,5 +1,5 @@ - -c broken-projects.in +--- aiohttp-3.11.2/requirements/test.in.orig ++++ aiohttp-3.11.2/requirements/test.in +@@ -1,4 +1,4 @@ --r base.in +-r requirements/base.in coverage freezegun ---- aiohttp-3.10.10/requirements/base.in.orig -+++ aiohttp-3.10.10/requirements/base.in +--- aiohttp-3.11.2/requirements/base.in.orig ++++ aiohttp-3.11.2/requirements/base.in @@ -1,4 +1,4 @@ --r runtime-deps.in +-r requirements/runtime-deps.in diff --git a/components/python/aiohttp/patches/06-remove-test-reqs.patch b/components/python/aiohttp/patches/06-remove-test-reqs.patch index 6dd8eb4a09..a74032e6b1 100644 --- a/components/python/aiohttp/patches/06-remove-test-reqs.patch +++ b/components/python/aiohttp/patches/06-remove-test-reqs.patch @@ -1,22 +1,24 @@ We do not have these projects packaged yet. ---- aiohttp-3.10.10/requirements/test.in.orig -+++ aiohttp-3.10.10/requirements/test.in -@@ -4,12 +4,8 @@ +--- aiohttp-3.11.2/requirements/test.in.orig ++++ aiohttp-3.11.2/requirements/test.in +@@ -3,14 +3,9 @@ coverage freezegun mypy; implementation_name == "cpython" --proxy.py >= 2.4.4rc4 +-proxy.py >= 2.4.4rc5 pytest pytest-cov pytest-mock + pytest-xdist +-pytest_codspeed -python-on-whales re-assert -setuptools-git trustme; platform_machine != "i686" # no 32-bit wheels -wait-for-it ---- aiohttp-3.10.10/requirements/base.in.orig -+++ aiohttp-3.10.10/requirements/base.in +--- aiohttp-3.11.2/requirements/base.in.orig ++++ aiohttp-3.11.2/requirements/base.in @@ -1,4 +1,3 @@ -r requirements/runtime-deps.in diff --git a/components/python/aiohttp/pkg5 b/components/python/aiohttp/pkg5 index e41f96f57f..df8be2e328 100644 --- a/components/python/aiohttp/pkg5 +++ b/components/python/aiohttp/pkg5 @@ -6,6 +6,7 @@ "library/python/attrs-39", "library/python/frozenlist-39", "library/python/multidict-39", + "library/python/propcache-39", "library/python/setuptools-39", "library/python/yarl-39", "runtime/python-39", diff --git a/components/python/aiohttp/python-integrate-project.conf b/components/python/aiohttp/python-integrate-project.conf index 08755c51b3..5852021849 100644 --- a/components/python/aiohttp/python-integrate-project.conf +++ b/components/python/aiohttp/python-integrate-project.conf @@ -47,6 +47,14 @@ COMPONENT_POST_TEST_ACTION += $(MV) $(@D)/aiohttp-RENAMED $(@D)/aiohttp ; PYTEST_ADDOPTS += --ignore tests/test_proxy_functional.py # We have no python-on-whales packaged yet. PYTEST_ADDOPTS += --ignore tests/autobahn/test_autobahn.py +# We have no pytest_codspeed packaged yet so we cannot run benchmark tests. +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_cookiejar.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_client_request.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_http_writer.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_http_websocket.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_client.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_client_ws.py +PYTEST_ADDOPTS += --ignore tests/test_benchmarks_web_middleware.py # Random directory name COMPONENT_TEST_TRANSFORMS += "-e 's|/tmp/.*/garbage[^/]*|\$$(TMPDIR)|'" diff --git a/components/python/aiohttp/test/results-all.master b/components/python/aiohttp/test/results-all.master index 536233e081..1692557bf8 100644 --- a/components/python/aiohttp/test/results-all.master +++ b/components/python/aiohttp/test/results-all.master @@ -4,31 +4,39 @@ cachedir: .pytest_cache rootdir: $(@D) configfile: setup.cfg testpaths: tests/ -collecting ... collected 3313 items / 6 deselected / 3307 selected +X workers [3367 items] + +scheduling tests via LoadScheduling -tests/test_base_protocol.py::test_loop PASSED -tests/test_base_protocol.py::test_pause_writing PASSED -tests/test_base_protocol.py::test_pause_reading_no_transport PASSED -tests/test_base_protocol.py::test_pause_reading_stub_transport PASSED -tests/test_base_protocol.py::test_resume_reading_no_transport PASSED -tests/test_base_protocol.py::test_resume_reading_stub_transport PASSED -tests/test_base_protocol.py::test_resume_writing_no_waiters PASSED -tests/test_base_protocol.py::test_resume_writing_waiter_done PASSED -tests/test_base_protocol.py::test_connection_made PASSED tests/test_base_protocol.py::test_connection_lost_not_paused PASSED tests/test_base_protocol.py::test_connection_lost_paused_without_waiter PASSED tests/test_base_protocol.py::test_connection_lost_waiter_done PASSED +tests/test_base_protocol.py::test_connection_made PASSED tests/test_base_protocol.py::test_drain_lost PASSED tests/test_base_protocol.py::test_drain_not_paused PASSED -tests/test_base_protocol.py::test_resume_drain_waited PASSED -tests/test_base_protocol.py::test_lost_drain_waited_ok PASSED -tests/test_base_protocol.py::test_lost_drain_waited_exception PASSED +tests/test_base_protocol.py::test_loop PASSED tests/test_base_protocol.py::test_lost_drain_cancelled PASSED -tests/test_base_protocol.py::test_resume_drain_cancelled PASSED +tests/test_base_protocol.py::test_lost_drain_waited_exception PASSED +tests/test_base_protocol.py::test_lost_drain_waited_ok PASSED tests/test_base_protocol.py::test_parallel_drain_race_condition PASSED -tests/test_circular_imports.py::test_no_warnings[aiohttp._helpers] PASSED +tests/test_base_protocol.py::test_pause_reading_no_transport PASSED +tests/test_base_protocol.py::test_pause_reading_stub_transport PASSED +tests/test_base_protocol.py::test_pause_writing PASSED +tests/test_base_protocol.py::test_resume_drain_cancelled PASSED +tests/test_base_protocol.py::test_resume_drain_waited PASSED +tests/test_base_protocol.py::test_resume_reading_no_transport PASSED +tests/test_base_protocol.py::test_resume_reading_stub_transport PASSED +tests/test_base_protocol.py::test_resume_writing_no_waiters PASSED +tests/test_base_protocol.py::test_resume_writing_waiter_done PASSED tests/test_circular_imports.py::test_no_warnings[aiohttp._http_parser] PASSED tests/test_circular_imports.py::test_no_warnings[aiohttp._http_writer] PASSED +tests/test_circular_imports.py::test_no_warnings[aiohttp._websocket.helpers] PASSED +tests/test_circular_imports.py::test_no_warnings[aiohttp._websocket.mask] PASSED +tests/test_circular_imports.py::test_no_warnings[aiohttp._websocket.models] PASSED +tests/test_circular_imports.py::test_no_warnings[aiohttp._websocket.reader] PASSED +tests/test_circular_imports.py::test_no_warnings[aiohttp._websocket.reader_c] PASSED +tests/test_circular_imports.py::test_no_warnings[aiohttp._websocket.reader_py] PASSED +tests/test_circular_imports.py::test_no_warnings[aiohttp._websocket.writer] PASSED tests/test_circular_imports.py::test_no_warnings[aiohttp._websocket] PASSED tests/test_circular_imports.py::test_no_warnings[aiohttp.abc] PASSED tests/test_circular_imports.py::test_no_warnings[aiohttp.base_protocol] PASSED @@ -78,31 +86,36 @@ tests/test_classbasedview.py::test_ctor PASSED tests/test_classbasedview.py::test_render_ok PASSED tests/test_classbasedview.py::test_render_unknown_method PASSED tests/test_classbasedview.py::test_render_unsupported_method PASSED -tests/test_client_connection.py::test_ctor PASSED +tests/test_client_connection.py::test_callbacks_exception PASSED tests/test_client_connection.py::test_callbacks_on_close PASSED tests/test_client_connection.py::test_callbacks_on_release PASSED -tests/test_client_connection.py::test_callbacks_exception PASSED -tests/test_client_connection.py::test_del PASSED tests/test_client_connection.py::test_close PASSED +tests/test_client_connection.py::test_ctor PASSED +tests/test_client_connection.py::test_del PASSED tests/test_client_connection.py::test_release PASSED tests/test_client_connection.py::test_release_proto_should_close PASSED tests/test_client_connection.py::test_release_released PASSED -tests/test_client_exceptions.py::TestClientResponseError::test_default_status PASSED -tests/test_client_exceptions.py::TestClientResponseError::test_status PASSED -tests/test_client_exceptions.py::TestClientResponseError::test_pickle PASSED -tests/test_client_exceptions.py::TestClientResponseError::test_repr PASSED -tests/test_client_exceptions.py::TestClientResponseError::test_str PASSED -tests/test_client_exceptions.py::test_response_status PASSED -tests/test_client_exceptions.py::test_response_deprecated_code_property PASSED -tests/test_client_exceptions.py::test_response_both_code_and_status PASSED -tests/test_client_exceptions.py::TestClientConnectorError::test_ctor PASSED -tests/test_client_exceptions.py::TestClientConnectorError::test_pickle PASSED -tests/test_client_exceptions.py::TestClientConnectorError::test_repr PASSED -tests/test_client_exceptions.py::TestClientConnectorError::test_str PASSED tests/test_client_exceptions.py::TestClientConnectorCertificateError::test_ctor PASSED tests/test_client_exceptions.py::TestClientConnectorCertificateError::test_pickle PASSED tests/test_client_exceptions.py::TestClientConnectorCertificateError::test_repr PASSED tests/test_client_exceptions.py::TestClientConnectorCertificateError::test_str PASSED +tests/test_client_exceptions.py::TestClientConnectorError::test_ctor PASSED +tests/test_client_exceptions.py::TestClientConnectorError::test_pickle PASSED +tests/test_client_exceptions.py::TestClientConnectorError::test_repr PASSED +tests/test_client_exceptions.py::TestClientConnectorError::test_str PASSED +tests/test_client_exceptions.py::TestClientResponseError::test_default_status PASSED +tests/test_client_exceptions.py::TestClientResponseError::test_pickle PASSED +tests/test_client_exceptions.py::TestClientResponseError::test_repr PASSED +tests/test_client_exceptions.py::TestClientResponseError::test_status PASSED +tests/test_client_exceptions.py::TestClientResponseError::test_str PASSED +tests/test_client_exceptions.py::TestInvalidURL::test_ctor PASSED +tests/test_client_exceptions.py::TestInvalidURL::test_none_description PASSED +tests/test_client_exceptions.py::TestInvalidURL::test_pickle PASSED +tests/test_client_exceptions.py::TestInvalidURL::test_repr_no_description PASSED +tests/test_client_exceptions.py::TestInvalidURL::test_repr_with_description PASSED +tests/test_client_exceptions.py::TestInvalidURL::test_repr_yarl_URL PASSED +tests/test_client_exceptions.py::TestInvalidURL::test_str_no_description PASSED +tests/test_client_exceptions.py::TestInvalidURL::test_str_with_description PASSED tests/test_client_exceptions.py::TestServerDisconnectedError::test_ctor PASSED tests/test_client_exceptions.py::TestServerDisconnectedError::test_pickle PASSED tests/test_client_exceptions.py::TestServerDisconnectedError::test_repr PASSED @@ -110,85 +123,27 @@ tests/test_client_exceptions.py::TestServerDisconnectedError::test_str PASSED tests/test_client_exceptions.py::TestServerFingerprintMismatch::test_ctor PASSED tests/test_client_exceptions.py::TestServerFingerprintMismatch::test_pickle PASSED tests/test_client_exceptions.py::TestServerFingerprintMismatch::test_repr PASSED -tests/test_client_exceptions.py::TestInvalidURL::test_ctor PASSED -tests/test_client_exceptions.py::TestInvalidURL::test_pickle PASSED -tests/test_client_exceptions.py::TestInvalidURL::test_repr_no_description PASSED -tests/test_client_exceptions.py::TestInvalidURL::test_repr_yarl_URL PASSED -tests/test_client_exceptions.py::TestInvalidURL::test_repr_with_description PASSED -tests/test_client_exceptions.py::TestInvalidURL::test_str_no_description PASSED -tests/test_client_exceptions.py::TestInvalidURL::test_none_description PASSED -tests/test_client_exceptions.py::TestInvalidURL::test_str_with_description PASSED -tests/test_client_fingerprint.py::test_fingerprint_sha256 PASSED -tests/test_client_fingerprint.py::test_fingerprint_sha1 PASSED -tests/test_client_fingerprint.py::test_fingerprint_md5 PASSED -tests/test_client_fingerprint.py::test_fingerprint_check_no_ssl PASSED -tests/test_client_fingerprint.py::test__merge_ssl_params_verify_ssl PASSED -tests/test_client_fingerprint.py::test__merge_ssl_params_verify_ssl_conflict PASSED -tests/test_client_fingerprint.py::test__merge_ssl_params_ssl_context PASSED -tests/test_client_fingerprint.py::test__merge_ssl_params_ssl_context_conflict PASSED +tests/test_client_exceptions.py::test_response_both_code_and_status PASSED +tests/test_client_exceptions.py::test_response_deprecated_code_property PASSED +tests/test_client_exceptions.py::test_response_status PASSED tests/test_client_fingerprint.py::test__merge_ssl_params_fingerprint PASSED tests/test_client_fingerprint.py::test__merge_ssl_params_fingerprint_conflict PASSED -tests/test_client_fingerprint.py::test__merge_ssl_params_ssl PASSED tests/test_client_fingerprint.py::test__merge_ssl_params_invlid PASSED -tests/test_client_functional.py::test_keepalive_two_requests_success[pyloop] PASSED -tests/test_client_functional.py::test_keepalive_after_head_requests_success[pyloop] PASSED -tests/test_client_functional.py::test_keepalive_after_empty_body_status[pyloop-101] PASSED -tests/test_client_functional.py::test_keepalive_after_empty_body_status[pyloop-204] PASSED -tests/test_client_functional.py::test_keepalive_after_empty_body_status[pyloop-304] PASSED -tests/test_client_functional.py::test_keepalive_after_empty_body_status_stream_response[pyloop-101] PASSED -tests/test_client_functional.py::test_keepalive_after_empty_body_status_stream_response[pyloop-204] PASSED -tests/test_client_functional.py::test_keepalive_after_empty_body_status_stream_response[pyloop-304] PASSED -tests/test_client_functional.py::test_keepalive_response_released[pyloop] PASSED -tests/test_client_functional.py::test_upgrade_connection_not_released_after_read[pyloop] PASSED -tests/test_client_functional.py::test_keepalive_server_force_close_connection[pyloop] PASSED -tests/test_client_functional.py::test_keepalive_timeout_async_sleep PASSED -tests/test_client_functional.py::test_keepalive_timeout_sync_sleep PASSED -tests/test_client_functional.py::test_release_early[pyloop] PASSED -tests/test_client_functional.py::test_HTTP_304[pyloop] PASSED -tests/test_client_functional.py::test_stream_request_on_server_eof[pyloop] PASSED -tests/test_client_functional.py::test_stream_request_on_server_eof_nested[pyloop] PASSED -tests/test_client_functional.py::test_HTTP_304_WITH_BODY[pyloop] PASSED -tests/test_client_functional.py::test_auto_header_user_agent[pyloop] PASSED -tests/test_client_functional.py::test_skip_auto_headers_user_agent[pyloop] PASSED -tests/test_client_functional.py::test_skip_default_auto_headers_user_agent[pyloop] PASSED -tests/test_client_functional.py::test_skip_auto_headers_content_type[pyloop] PASSED -tests/test_client_functional.py::test_post_data_bytesio[pyloop] PASSED -tests/test_client_functional.py::test_post_data_with_bytesio_file[pyloop] PASSED -tests/test_client_functional.py::test_post_data_stringio[pyloop] PASSED -tests/test_client_functional.py::test_post_data_textio_encoding[pyloop] PASSED -tests/test_client_functional.py::test_post_data_zipfile_filelike[pyloop] PASSED -tests/test_client_functional.py::test_post_data_tarfile_filelike[pyloop] PASSED -tests/test_client_functional.py::test_ssl_client[pyloop] PASSED -tests/test_client_functional.py::test_tcp_connector_fingerprint_ok[pyloop] PASSED -tests/test_client_functional.py::test_tcp_connector_fingerprint_fail[pyloop] PASSED -tests/test_client_functional.py::test_format_task_get[pyloop] PASSED -tests/test_client_functional.py::test_str_params[pyloop] PASSED -tests/test_client_functional.py::test_params_and_query_string[pyloop] PASSED -tests/test_client_functional.py::test_empty_params_and_query_string[pyloop-None] PASSED -tests/test_client_functional.py::test_empty_params_and_query_string[pyloop-] PASSED -tests/test_client_functional.py::test_empty_params_and_query_string[pyloop-params2] PASSED -tests/test_client_functional.py::test_empty_params_and_query_string[pyloop-params3] PASSED -tests/test_client_functional.py::test_drop_params_on_redirect[pyloop] PASSED -tests/test_client_functional.py::test_drop_fragment_on_redirect[pyloop] PASSED -tests/test_client_functional.py::test_drop_fragment[pyloop] PASSED -tests/test_client_functional.py::test_history[pyloop] PASSED -tests/test_client_functional.py::test_keepalive_closed_by_server[pyloop] PASSED -tests/test_client_functional.py::test_wait_for[pyloop] PASSED -tests/test_client_functional.py::test_raw_headers[pyloop] PASSED -tests/test_client_functional.py::test_host_header_first[pyloop] PASSED -tests/test_client_functional.py::test_empty_header_values[pyloop] PASSED +tests/test_client_fingerprint.py::test__merge_ssl_params_ssl PASSED +tests/test_client_fingerprint.py::test__merge_ssl_params_ssl_context PASSED +tests/test_client_fingerprint.py::test__merge_ssl_params_ssl_context_conflict PASSED +tests/test_client_fingerprint.py::test__merge_ssl_params_verify_ssl PASSED +tests/test_client_fingerprint.py::test__merge_ssl_params_verify_ssl_conflict PASSED +tests/test_client_fingerprint.py::test_fingerprint_check_no_ssl PASSED +tests/test_client_fingerprint.py::test_fingerprint_md5 PASSED +tests/test_client_fingerprint.py::test_fingerprint_sha1 PASSED +tests/test_client_fingerprint.py::test_fingerprint_sha256 PASSED tests/test_client_functional.py::test_204_with_gzipped_content_encoding[pyloop] PASSED -tests/test_client_functional.py::test_timeout_on_reading_headers[pyloop] PASSED -tests/test_client_functional.py::test_timeout_on_conn_reading_headers[pyloop] PASSED -tests/test_client_functional.py::test_timeout_on_session_read_timeout[pyloop] PASSED -tests/test_client_functional.py::test_read_timeout_between_chunks[pyloop] PASSED -tests/test_client_functional.py::test_read_timeout_on_reading_chunks[pyloop] PASSED -tests/test_client_functional.py::test_read_timeout_on_write[pyloop] PASSED -tests/test_client_functional.py::test_timeout_on_reading_data[pyloop] PASSED -tests/test_client_functional.py::test_timeout_none[pyloop] PASSED -tests/test_client_functional.py::test_readline_error_on_conn_close[pyloop] PASSED -tests/test_client_functional.py::test_no_error_on_conn_close_if_eof[pyloop] PASSED -tests/test_client_functional.py::test_error_not_overwrote_on_conn_close[pyloop] PASSED +tests/test_client_functional.py::test_GET_DEFLATE[pyloop] PASSED +tests/test_client_functional.py::test_GET_DEFLATE_no_body[pyloop] PASSED +tests/test_client_functional.py::test_HTTP_200_GET_WITH_MIXED_PARAMS[pyloop] PASSED +tests/test_client_functional.py::test_HTTP_200_GET_WITH_MultiDict_PARAMS[pyloop] PASSED +tests/test_client_functional.py::test_HTTP_200_GET_WITH_PARAMS[pyloop] PASSED tests/test_client_functional.py::test_HTTP_200_OK_METHOD[pyloop] PASSED tests/test_client_functional.py::test_HTTP_200_OK_METHOD_connector[pyloop] PASSED tests/test_client_functional.py::test_HTTP_302_REDIRECT_GET[pyloop] PASSED @@ -196,508 +151,561 @@ tests/test_client_functional.py::test_HTTP_302_REDIRECT_HEAD[pyloop] PASSED tests/test_client_functional.py::test_HTTP_302_REDIRECT_NON_HTTP[pyloop] PASSED tests/test_client_functional.py::test_HTTP_302_REDIRECT_POST[pyloop] PASSED tests/test_client_functional.py::test_HTTP_302_REDIRECT_POST_with_content_length_hdr[pyloop] PASSED +tests/test_client_functional.py::test_HTTP_302_max_redirects[pyloop] PASSED +tests/test_client_functional.py::test_HTTP_304[pyloop] PASSED +tests/test_client_functional.py::test_HTTP_304_WITH_BODY[pyloop] PASSED tests/test_client_functional.py::test_HTTP_307_REDIRECT_POST[pyloop] PASSED tests/test_client_functional.py::test_HTTP_308_PERMANENT_REDIRECT_POST[pyloop] PASSED -tests/test_client_functional.py::test_HTTP_302_max_redirects[pyloop] PASSED -tests/test_client_functional.py::test_HTTP_200_GET_WITH_PARAMS[pyloop] PASSED -tests/test_client_functional.py::test_HTTP_200_GET_WITH_MultiDict_PARAMS[pyloop] PASSED -tests/test_client_functional.py::test_HTTP_200_GET_WITH_MIXED_PARAMS[pyloop] PASSED tests/test_client_functional.py::test_POST_DATA[pyloop] PASSED -tests/test_client_functional.py::test_POST_DATA_with_explicit_formdata[pyloop] PASSED -tests/test_client_functional.py::test_POST_DATA_with_charset[pyloop] PASSED +tests/test_client_functional.py::test_POST_DATA_DEFLATE[pyloop] PASSED tests/test_client_functional.py::test_POST_DATA_formdats_with_charset[pyloop] PASSED +tests/test_client_functional.py::test_POST_DATA_with_charset[pyloop] PASSED tests/test_client_functional.py::test_POST_DATA_with_charset_post[pyloop] PASSED -tests/test_client_functional.py::test_POST_MultiDict[pyloop] PASSED -tests/test_client_functional.py::test_GET_DEFLATE[pyloop-None] PASSED -tests/test_client_functional.py::test_GET_DEFLATE[pyloop-] PASSED -tests/test_client_functional.py::test_POST_DATA_DEFLATE[pyloop] PASSED +tests/test_client_functional.py::test_POST_DATA_with_explicit_formdata[pyloop] PASSED tests/test_client_functional.py::test_POST_FILES[pyloop] PASSED +tests/test_client_functional.py::test_POST_FILES_CT[pyloop] PASSED tests/test_client_functional.py::test_POST_FILES_DEFLATE[pyloop] PASSED -tests/test_client_functional.py::test_POST_bytes[pyloop] PASSED -tests/test_client_functional.py::test_POST_bytes_too_large[pyloop] PASSED -tests/test_client_functional.py::test_POST_FILES_STR[pyloop] PASSED -tests/test_client_functional.py::test_POST_FILES_STR_SIMPLE[pyloop] PASSED +tests/test_client_functional.py::test_POST_FILES_IO[pyloop] PASSED +tests/test_client_functional.py::test_POST_FILES_IO_WITH_PARAMS[pyloop] PASSED tests/test_client_functional.py::test_POST_FILES_LIST[pyloop] PASSED -tests/test_client_functional.py::test_POST_FILES_CT[pyloop] PASSED tests/test_client_functional.py::test_POST_FILES_SINGLE[pyloop] PASSED -tests/test_client_functional.py::test_POST_FILES_SINGLE_content_disposition[pyloop] PASSED tests/test_client_functional.py::test_POST_FILES_SINGLE_BINARY[pyloop] PASSED -tests/test_client_functional.py::test_POST_FILES_IO[pyloop] PASSED -tests/test_client_functional.py::test_POST_FILES_IO_WITH_PARAMS[pyloop] PASSED +tests/test_client_functional.py::test_POST_FILES_SINGLE_content_disposition[pyloop] PASSED +tests/test_client_functional.py::test_POST_FILES_STR[pyloop] PASSED +tests/test_client_functional.py::test_POST_FILES_STR_SIMPLE[pyloop] PASSED tests/test_client_functional.py::test_POST_FILES_WITH_DATA[pyloop] PASSED +tests/test_client_functional.py::test_POST_MultiDict[pyloop] PASSED tests/test_client_functional.py::test_POST_STREAM_DATA[pyloop] PASSED tests/test_client_functional.py::test_POST_STREAM_DATA_no_params[pyloop] PASSED -tests/test_client_functional.py::test_json[pyloop] PASSED -tests/test_client_functional.py::test_json_custom[pyloop] PASSED -tests/test_client_functional.py::test_expect_continue[pyloop] PASSED -tests/test_client_functional.py::test_encoding_deflate[pyloop] PASSED -tests/test_client_functional.py::test_encoding_deflate_nochunk[pyloop] PASSED -tests/test_client_functional.py::test_encoding_gzip[pyloop] PASSED -tests/test_client_functional.py::test_encoding_gzip_write_by_chunks[pyloop] PASSED -tests/test_client_functional.py::test_encoding_gzip_nochunk[pyloop] PASSED -tests/test_client_functional.py::test_bad_payload_compression[pyloop] PASSED +tests/test_client_functional.py::test_POST_bytes[pyloop] PASSED +tests/test_client_functional.py::test_POST_bytes_too_large[pyloop] PASSED +tests/test_client_functional.py::test_aiohttp_request_context_manager[pyloop] PASSED +tests/test_client_functional.py::test_aiohttp_request_coroutine[pyloop] PASSED +tests/test_client_functional.py::test_aiohttp_request_ctx_manager_close_sess_on_error[pyloop] PASSED +tests/test_client_functional.py::test_aiohttp_request_ctx_manager_not_found PASSED +tests/test_client_functional.py::test_async_payload_generator[pyloop] PASSED +tests/test_client_functional.py::test_async_with_session PASSED +tests/test_client_functional.py::test_auth_persist_on_redirect_to_other_host_with_global_auth[pyloop] PASSED +tests/test_client_functional.py::test_auto_header_user_agent[pyloop] PASSED +tests/test_client_functional.py::test_await_after_cancelling[pyloop] PASSED tests/test_client_functional.py::test_bad_payload_chunked_encoding[pyloop] PASSED -tests/test_client_functional.py::test_no_payload_304_with_chunked_encoding[pyloop] PASSED -tests/test_client_functional.py::test_head_request_with_chunked_encoding[pyloop] PASSED -tests/test_client_functional.py::test_no_payload_200_with_chunked_encoding[pyloop] PASSED +tests/test_client_functional.py::test_bad_payload_compression[pyloop] PASSED tests/test_client_functional.py::test_bad_payload_content_length[pyloop] PASSED -tests/test_client_functional.py::test_payload_content_length_by_chunks[pyloop] PASSED +tests/test_client_functional.py::test_broken_connection[pyloop] XFAIL +tests/test_client_functional.py::test_broken_connection_2[pyloop] PASSED tests/test_client_functional.py::test_chunked[pyloop] PASSED -tests/test_client_functional.py::test_shortcuts[pyloop] PASSED +tests/test_client_functional.py::test_chunked_deprecated[pyloop] PASSED +tests/test_client_functional.py::test_close_context_manager[pyloop] PASSED +tests/test_client_functional.py::test_close_detached_session_on_non_existing_addr PASSED +tests/test_client_functional.py::test_close_resp_on_error_async_with_session[pyloop] PASSED tests/test_client_functional.py::test_cookies[pyloop] PASSED +tests/test_client_functional.py::test_cookies_on_empty_session_jar[pyloop] PASSED tests/test_client_functional.py::test_cookies_per_request[pyloop] PASSED tests/test_client_functional.py::test_cookies_redirect[pyloop] PASSED -tests/test_client_functional.py::test_cookies_on_empty_session_jar[pyloop] PASSED -tests/test_client_functional.py::test_morsel_with_attributes[pyloop] PASSED -tests/test_client_functional.py::test_set_cookies[pyloop] PASSED -tests/test_client_functional.py::test_set_cookies_expired[pyloop] PASSED -tests/test_client_functional.py::test_set_cookies_max_age[pyloop] PASSED -tests/test_client_functional.py::test_set_cookies_max_age_overflow[pyloop] PASSED -tests/test_client_functional.py::test_request_conn_error PASSED -tests/test_client_functional.py::test_broken_connection[pyloop] XFAIL -tests/test_client_functional.py::test_broken_connection_2[pyloop] PASSED +tests/test_client_functional.py::test_creds_in_auth_and_redirect_url[pyloop] PASSED +tests/test_client_functional.py::test_creds_in_auth_and_url PASSED tests/test_client_functional.py::test_custom_headers[pyloop] PASSED -tests/test_client_functional.py::test_redirect_to_absolute_url[pyloop] PASSED -tests/test_client_functional.py::test_redirect_without_location_header[pyloop] PASSED -tests/test_client_functional.py::test_chunked_deprecated[pyloop] PASSED -tests/test_client_functional.py::test_invalid_and_non_http_url[http://:/-http://:/-InvalidUrlClientError] PASSED -tests/test_client_functional.py::test_invalid_and_non_http_url[http://example.org:non_int_port/-http://example.org:non_int_port/-InvalidUrlClientError] PASSED -tests/test_client_functional.py::test_invalid_and_non_http_url[http:/-http:///-InvalidUrlClientError] PASSED -tests/test_client_functional.py::test_invalid_and_non_http_url[http:/example.com-http:///example.com-InvalidUrlClientError] PASSED -tests/test_client_functional.py::test_invalid_and_non_http_url[http:///example.com-http:///example.com-InvalidUrlClientError] PASSED -tests/test_client_functional.py::test_invalid_and_non_http_url[call:+380123456789-call:\\+380123456789-NonHttpUrlClientError] PASSED -tests/test_client_functional.py::test_invalid_and_non_http_url[skype:handle-skype:handle-NonHttpUrlClientError] PASSED -tests/test_client_functional.py::test_invalid_and_non_http_url[slack://instance/room-slack://instance/room-NonHttpUrlClientError] PASSED -tests/test_client_functional.py::test_invalid_and_non_http_url[steam:code-steam:code-NonHttpUrlClientError] PASSED -tests/test_client_functional.py::test_invalid_and_non_http_url[twitter://handle-twitter://handle-NonHttpUrlClientError] PASSED -tests/test_client_functional.py::test_invalid_and_non_http_url[bluesky://profile/d:i:d-bluesky://profile/d:i:d-NonHttpUrlClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url[pyloop-http:/-http:///-InvalidUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url[pyloop-http:/example.com-http:///example.com-InvalidUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url[pyloop-http:///example.com-http:///example.com-InvalidUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url[pyloop-http://:/-http://:/-InvalidUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url[pyloop-http://example.org:non_int_port/-http://example.org:non_int_port/-InvalidUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url[pyloop-call:+380123456789-call:\\+380123456789-NonHttpUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url[pyloop-skype:handle-skype:handle-NonHttpUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url[pyloop-slack://instance/room-slack://instance/room-NonHttpUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url[pyloop-steam:code-steam:code-NonHttpUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url[pyloop-twitter://handle-twitter://handle-NonHttpUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url[pyloop-bluesky://profile/d:i:d-bluesky://profile/d:i:d-NonHttpUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-http:/-http:///-InvalidUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-http:/example.com-http:///example.com-InvalidUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-http:///example.com-http:///example.com-InvalidUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-http://:/-http://:/-InvalidUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-http://example.org:non_int_port/-http://example.org:non_int_port/-InvalidUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-call:+380123456789-call:\\+380123456789-NonHttpUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-skype:handle-skype:handle-NonHttpUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-slack://instance/room-slack://instance/room-NonHttpUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_dont_close_explicit_connector[pyloop] PASSED +tests/test_client_functional.py::test_drop_auth_on_redirect_to_other_host[pyloop-entirely different hosts] PASSED +tests/test_client_functional.py::test_drop_auth_on_redirect_to_other_host[pyloop-http -> https] PASSED +tests/test_client_functional.py::test_drop_auth_on_redirect_to_other_host[pyloop-https -> http] PASSED +tests/test_client_functional.py::test_drop_auth_on_redirect_to_other_host_with_global_auth_and_base_url[pyloop] PASSED +tests/test_client_functional.py::test_drop_fragment[pyloop] PASSED +tests/test_client_functional.py::test_drop_fragment_on_redirect[pyloop] PASSED +tests/test_client_functional.py::test_drop_params_on_redirect[pyloop] PASSED +tests/test_client_functional.py::test_empty_header_values[pyloop] PASSED +tests/test_client_functional.py::test_empty_params_and_query_string[pyloop-None] PASSED +tests/test_client_functional.py::test_empty_params_and_query_string[pyloop-] PASSED +tests/test_client_functional.py::test_empty_params_and_query_string[pyloop-params2] PASSED +tests/test_client_functional.py::test_empty_params_and_query_string[pyloop-params3] PASSED +tests/test_client_functional.py::test_encoding_deflate[pyloop] PASSED +tests/test_client_functional.py::test_encoding_deflate_nochunk[pyloop] PASSED +tests/test_client_functional.py::test_encoding_gzip[pyloop] PASSED +tests/test_client_functional.py::test_encoding_gzip_nochunk[pyloop] PASSED +tests/test_client_functional.py::test_encoding_gzip_write_by_chunks[pyloop] PASSED +tests/test_client_functional.py::test_error_in_performing_request[pyloop] PASSED +tests/test_client_functional.py::test_error_not_overwrote_on_conn_close[pyloop] PASSED +tests/test_client_functional.py::test_exception_when_read_outside_of_session[pyloop] PASSED +tests/test_client_functional.py::test_expect_continue[pyloop] PASSED +tests/test_client_functional.py::test_format_task_get[pyloop] PASSED +tests/test_client_functional.py::test_handle_keepalive_on_closed_connection PASSED +tests/test_client_functional.py::test_head_request_with_chunked_encoding[pyloop] PASSED +tests/test_client_functional.py::test_history[pyloop] PASSED +tests/test_client_functional.py::test_host_header_first[pyloop] PASSED +tests/test_client_functional.py::test_http_empty_data_text[pyloop] PASSED +tests/test_client_functional.py::test_invalid_and_non_http_url[bluesky://profile/d:i:d-bluesky://profile/d:i:d-NonHttpUrlClientError] PASSED +tests/test_client_functional.py::test_invalid_and_non_http_url[call:+380123456789-call:\\+380123456789-NonHttpUrlClientError] PASSED +tests/test_client_functional.py::test_invalid_and_non_http_url[http:/-http:///-InvalidUrlClientError] PASSED +tests/test_client_functional.py::test_invalid_and_non_http_url[http:///example.com-http:///example.com-InvalidUrlClientError] PASSED +tests/test_client_functional.py::test_invalid_and_non_http_url[http://:/-http://:/-InvalidUrlClientError] PASSED +tests/test_client_functional.py::test_invalid_and_non_http_url[http://example.org:non_int_port/-http://example.org:non_int_port/-InvalidUrlClientError] PASSED +tests/test_client_functional.py::test_invalid_and_non_http_url[http:/example.com-http:///example.com-InvalidUrlClientError] PASSED +tests/test_client_functional.py::test_invalid_and_non_http_url[skype:handle-skype:handle-NonHttpUrlClientError] PASSED +tests/test_client_functional.py::test_invalid_and_non_http_url[slack://instance/room-slack://instance/room-NonHttpUrlClientError] PASSED +tests/test_client_functional.py::test_invalid_and_non_http_url[steam:code-steam:code-NonHttpUrlClientError] PASSED +tests/test_client_functional.py::test_invalid_and_non_http_url[twitter://handle-twitter://handle-NonHttpUrlClientError] PASSED +tests/test_client_functional.py::test_invalid_idna PASSED +tests/test_client_functional.py::test_invalid_redirect_url[pyloop-bluesky://profile/d:i:d-bluesky://profile/d:i:d-NonHttpUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url[pyloop-call:+380123456789-call:\\+380123456789-NonHttpUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url[pyloop-http:/-http:///-InvalidUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url[pyloop-http:///example.com-http:///example.com-InvalidUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url[pyloop-http://:/-http://:/-InvalidUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url[pyloop-http://example.org:non_int_port/-http://example.org:non_int_port/-InvalidUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url[pyloop-http:/example.com-http:///example.com-InvalidUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url[pyloop-skype:handle-skype:handle-NonHttpUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url[pyloop-slack://instance/room-slack://instance/room-NonHttpUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url[pyloop-steam:code-steam:code-NonHttpUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url[pyloop-twitter://handle-twitter://handle-NonHttpUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-bluesky://profile/d:i:d-bluesky://profile/d:i:d-NonHttpUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-call:+380123456789-call:\\+380123456789-NonHttpUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-http:/-http:///-InvalidUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-http:///example.com-http:///example.com-InvalidUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-http://:/-http://:/-InvalidUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-http://example.org:non_int_port/-http://example.org:non_int_port/-InvalidUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-http:/example.com-http:///example.com-InvalidUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-skype:handle-skype:handle-NonHttpUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-slack://instance/room-slack://instance/room-NonHttpUrlRedirectClientError] PASSED tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-steam:code-steam:code-NonHttpUrlRedirectClientError] PASSED tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-twitter://handle-twitter://handle-NonHttpUrlRedirectClientError] PASSED -tests/test_client_functional.py::test_invalid_redirect_url_multiple_redirects[pyloop-bluesky://profile/d:i:d-bluesky://profile/d:i:d-NonHttpUrlRedirectClientError] PASSED +tests/test_client_functional.py::test_json[pyloop] PASSED +tests/test_client_functional.py::test_json_custom[pyloop] PASSED +tests/test_client_functional.py::test_keepalive_after_empty_body_status[pyloop-101] PASSED +tests/test_client_functional.py::test_keepalive_after_empty_body_status[pyloop-204] PASSED +tests/test_client_functional.py::test_keepalive_after_empty_body_status[pyloop-304] PASSED +tests/test_client_functional.py::test_keepalive_after_empty_body_status_stream_response[pyloop-101] PASSED +tests/test_client_functional.py::test_keepalive_after_empty_body_status_stream_response[pyloop-204] PASSED +tests/test_client_functional.py::test_keepalive_after_empty_body_status_stream_response[pyloop-304] PASSED +tests/test_client_functional.py::test_keepalive_after_head_requests_success[pyloop] PASSED +tests/test_client_functional.py::test_keepalive_closed_by_server[pyloop] PASSED +tests/test_client_functional.py::test_keepalive_response_released[pyloop] PASSED +tests/test_client_functional.py::test_keepalive_server_force_close_connection[pyloop] PASSED +tests/test_client_functional.py::test_keepalive_timeout_async_sleep PASSED +tests/test_client_functional.py::test_keepalive_timeout_sync_sleep PASSED +tests/test_client_functional.py::test_keepalive_two_requests_success[pyloop] PASSED +tests/test_client_functional.py::test_max_field_size_request_explicit[pyloop] PASSED +tests/test_client_functional.py::test_max_field_size_session_default[pyloop] PASSED +tests/test_client_functional.py::test_max_field_size_session_default_fail[pyloop] PASSED +tests/test_client_functional.py::test_max_field_size_session_explicit[pyloop] PASSED +tests/test_client_functional.py::test_max_line_size_request_explicit[pyloop] PASSED +tests/test_client_functional.py::test_max_line_size_session_default[pyloop] PASSED +tests/test_client_functional.py::test_max_line_size_session_default_fail[pyloop] PASSED +tests/test_client_functional.py::test_max_line_size_session_explicit[pyloop] PASSED +tests/test_client_functional.py::test_morsel_with_attributes[pyloop] PASSED +tests/test_client_functional.py::test_multidict_headers[pyloop] PASSED +tests/test_client_functional.py::test_no_error_on_conn_close_if_eof[pyloop] PASSED +tests/test_client_functional.py::test_no_payload_200_with_chunked_encoding[pyloop] PASSED +tests/test_client_functional.py::test_no_payload_304_with_chunked_encoding[pyloop] PASSED +tests/test_client_functional.py::test_non_close_detached_session_on_error_cm[pyloop] PASSED tests/test_client_functional.py::test_ok_from_status[pyloop-200-True] PASSED tests/test_client_functional.py::test_ok_from_status[pyloop-201-True] PASSED tests/test_client_functional.py::test_ok_from_status[pyloop-301-True] PASSED tests/test_client_functional.py::test_ok_from_status[pyloop-400-False] PASSED tests/test_client_functional.py::test_ok_from_status[pyloop-403-False] PASSED tests/test_client_functional.py::test_ok_from_status[pyloop-500-False] PASSED +tests/test_client_functional.py::test_params_and_query_string[pyloop] PASSED +tests/test_client_functional.py::test_payload_content_length_by_chunks[pyloop] PASSED +tests/test_client_functional.py::test_post_data_bytesio[pyloop] PASSED +tests/test_client_functional.py::test_post_data_stringio[pyloop] PASSED +tests/test_client_functional.py::test_post_data_tarfile_filelike[pyloop] PASSED +tests/test_client_functional.py::test_post_data_textio_encoding[pyloop] PASSED +tests/test_client_functional.py::test_post_data_with_bytesio_file[pyloop] PASSED +tests/test_client_functional.py::test_post_data_zipfile_filelike[pyloop] PASSED tests/test_client_functional.py::test_raise_for_status[pyloop] PASSED -tests/test_client_functional.py::test_raise_for_status_per_request[pyloop] PASSED tests/test_client_functional.py::test_raise_for_status_disable_per_request[pyloop] PASSED -tests/test_client_functional.py::test_request_raise_for_status_default[pyloop] PASSED -tests/test_client_functional.py::test_request_raise_for_status_disabled[pyloop] PASSED -tests/test_client_functional.py::test_request_raise_for_status_enabled[pyloop] PASSED -tests/test_client_functional.py::test_session_raise_for_status_coro[pyloop] PASSED -tests/test_client_functional.py::test_request_raise_for_status_coro[pyloop] PASSED -tests/test_client_functional.py::test_invalid_idna PASSED -tests/test_client_functional.py::test_creds_in_auth_and_url PASSED -tests/test_client_functional.py::test_drop_auth_on_redirect_to_other_host[pyloop-entirely different hosts] PASSED -tests/test_client_functional.py::test_drop_auth_on_redirect_to_other_host[pyloop-http -> https] PASSED -tests/test_client_functional.py::test_drop_auth_on_redirect_to_other_host[pyloop-https -> http] PASSED -tests/test_client_functional.py::test_async_with_session PASSED -tests/test_client_functional.py::test_session_close_awaitable PASSED -tests/test_client_functional.py::test_close_resp_on_error_async_with_session[pyloop] PASSED -tests/test_client_functional.py::test_release_resp_on_normal_exit_from_cm[pyloop] PASSED -tests/test_client_functional.py::test_non_close_detached_session_on_error_cm[pyloop] PASSED -tests/test_client_functional.py::test_close_detached_session_on_non_existing_addr PASSED -tests/test_client_functional.py::test_aiohttp_request_context_manager[pyloop] PASSED -tests/test_client_functional.py::test_aiohttp_request_ctx_manager_close_sess_on_error[pyloop] PASSED -tests/test_client_functional.py::test_aiohttp_request_ctx_manager_not_found PASSED +tests/test_client_functional.py::test_raise_for_status_is_none[pyloop] PASSED +tests/test_client_functional.py::test_raise_for_status_per_request[pyloop] PASSED tests/test_client_functional.py::test_raising_client_connector_dns_error_on_dns_failure PASSED -tests/test_client_functional.py::test_aiohttp_request_coroutine[pyloop] PASSED -tests/test_client_functional.py::test_yield_from_in_session_request[pyloop] PASSED -tests/test_client_functional.py::test_close_context_manager[pyloop] PASSED -tests/test_client_functional.py::test_session_auth[pyloop] PASSED -tests/test_client_functional.py::test_session_auth_override[pyloop] PASSED -tests/test_client_functional.py::test_session_auth_header_conflict[pyloop] PASSED -tests/test_client_functional.py::test_session_headers[pyloop] PASSED -tests/test_client_functional.py::test_session_headers_merge[pyloop] PASSED -tests/test_client_functional.py::test_multidict_headers[pyloop] PASSED -tests/test_client_functional.py::test_request_conn_closed[pyloop] PASSED -tests/test_client_functional.py::test_dont_close_explicit_connector[pyloop] PASSED -tests/test_client_functional.py::test_server_close_keepalive_connection PASSED -tests/test_client_functional.py::test_handle_keepalive_on_closed_connection PASSED -tests/test_client_functional.py::test_error_in_performing_request[pyloop] PASSED -tests/test_client_functional.py::test_await_after_cancelling[pyloop] PASSED -tests/test_client_functional.py::test_async_payload_generator[pyloop] PASSED -tests/test_client_functional.py::test_read_from_closed_response[pyloop] PASSED -tests/test_client_functional.py::test_read_from_closed_response2[pyloop] PASSED +tests/test_client_functional.py::test_raw_headers[pyloop] PASSED tests/test_client_functional.py::test_read_after_catch_raise_for_status[pyloop] PASSED tests/test_client_functional.py::test_read_after_raise_outside_context[pyloop] PASSED +tests/test_client_functional.py::test_read_bufsize_explicit[pyloop] PASSED +tests/test_client_functional.py::test_read_bufsize_session_default[pyloop] PASSED tests/test_client_functional.py::test_read_from_closed_content[pyloop] PASSED +tests/test_client_functional.py::test_read_from_closed_response2[pyloop] PASSED +tests/test_client_functional.py::test_read_from_closed_response[pyloop] PASSED tests/test_client_functional.py::test_read_timeout[pyloop] PASSED -tests/test_client_functional.py::test_socket_timeout[pyloop] PASSED +tests/test_client_functional.py::test_read_timeout_between_chunks[pyloop] PASSED tests/test_client_functional.py::test_read_timeout_closes_connection[pyloop] PASSED tests/test_client_functional.py::test_read_timeout_on_prepared_response[pyloop] PASSED -tests/test_client_functional.py::test_timeout_with_full_buffer[pyloop] PASSED -tests/test_client_functional.py::test_read_bufsize_session_default[pyloop] PASSED -tests/test_client_functional.py::test_read_bufsize_explicit[pyloop] PASSED -tests/test_client_functional.py::test_http_empty_data_text[pyloop] PASSED -tests/test_client_functional.py::test_max_field_size_session_default[pyloop] PASSED -tests/test_client_functional.py::test_max_field_size_session_default_fail[pyloop] PASSED -tests/test_client_functional.py::test_max_field_size_session_explicit[pyloop] PASSED -tests/test_client_functional.py::test_max_field_size_request_explicit[pyloop] PASSED -tests/test_client_functional.py::test_max_line_size_session_default[pyloop] PASSED -tests/test_client_functional.py::test_max_line_size_session_default_fail[pyloop] PASSED -tests/test_client_functional.py::test_max_line_size_session_explicit[pyloop] PASSED -tests/test_client_functional.py::test_max_line_size_request_explicit[pyloop] PASSED +tests/test_client_functional.py::test_read_timeout_on_reading_chunks[pyloop] PASSED +tests/test_client_functional.py::test_read_timeout_on_write[pyloop] PASSED +tests/test_client_functional.py::test_readline_error_on_conn_close[pyloop] PASSED +tests/test_client_functional.py::test_redirect_to_absolute_url[pyloop] PASSED +tests/test_client_functional.py::test_redirect_without_location_header[pyloop] PASSED tests/test_client_functional.py::test_rejected_upload[pyloop] PASSED +tests/test_client_functional.py::test_release_early[pyloop] PASSED +tests/test_client_functional.py::test_release_resp_on_normal_exit_from_cm[pyloop] PASSED +tests/test_client_functional.py::test_request_conn_closed[pyloop] PASSED +tests/test_client_functional.py::test_request_conn_error PASSED +tests/test_client_functional.py::test_request_raise_for_status_coro[pyloop] PASSED +tests/test_client_functional.py::test_request_raise_for_status_default[pyloop] PASSED +tests/test_client_functional.py::test_request_raise_for_status_disabled[pyloop] PASSED +tests/test_client_functional.py::test_request_raise_for_status_enabled[pyloop] PASSED tests/test_client_functional.py::test_request_with_wrong_proxy[pyloop-42-TypeError] PASSED tests/test_client_functional.py::test_request_with_wrong_proxy[pyloop-InvalidUrl-InvalidURL] PASSED -tests/test_client_functional.py::test_raise_for_status_is_none[pyloop] PASSED -tests/test_client_functional.py::test_exception_when_read_outside_of_session[pyloop] PASSED -tests/test_client_proto.py::test_oserror[pyloop] PASSED -tests/test_client_proto.py::test_pause_resume_on_error[pyloop] PASSED +tests/test_client_functional.py::test_server_close_keepalive_connection PASSED +tests/test_client_functional.py::test_session_auth[pyloop] PASSED +tests/test_client_functional.py::test_session_auth_header_conflict[pyloop] PASSED +tests/test_client_functional.py::test_session_auth_override[pyloop] PASSED +tests/test_client_functional.py::test_session_close_awaitable PASSED +tests/test_client_functional.py::test_session_headers[pyloop] PASSED +tests/test_client_functional.py::test_session_headers_merge[pyloop] PASSED +tests/test_client_functional.py::test_session_raise_for_status_coro[pyloop] PASSED +tests/test_client_functional.py::test_set_cookies[pyloop] PASSED +tests/test_client_functional.py::test_set_cookies_expired[pyloop] PASSED +tests/test_client_functional.py::test_set_cookies_max_age[pyloop] PASSED +tests/test_client_functional.py::test_set_cookies_max_age_overflow[pyloop] PASSED +tests/test_client_functional.py::test_shortcuts[pyloop] PASSED +tests/test_client_functional.py::test_skip_auto_headers_content_type[pyloop] PASSED +tests/test_client_functional.py::test_skip_auto_headers_user_agent[pyloop] PASSED +tests/test_client_functional.py::test_skip_default_auto_headers_user_agent[pyloop] PASSED +tests/test_client_functional.py::test_socket_timeout[pyloop] PASSED +tests/test_client_functional.py::test_ssl_client[pyloop] PASSED +tests/test_client_functional.py::test_str_params[pyloop] PASSED +tests/test_client_functional.py::test_stream_request_on_server_eof[pyloop] PASSED +tests/test_client_functional.py::test_stream_request_on_server_eof_nested[pyloop] PASSED +tests/test_client_functional.py::test_tcp_connector_fingerprint_fail[pyloop] PASSED +tests/test_client_functional.py::test_tcp_connector_fingerprint_ok[pyloop] PASSED +tests/test_client_functional.py::test_timeout_none[pyloop] PASSED +tests/test_client_functional.py::test_timeout_on_conn_reading_headers[pyloop] PASSED +tests/test_client_functional.py::test_timeout_on_reading_data[pyloop] PASSED +tests/test_client_functional.py::test_timeout_on_reading_headers[pyloop] PASSED +tests/test_client_functional.py::test_timeout_on_session_read_timeout[pyloop] PASSED +tests/test_client_functional.py::test_timeout_with_full_buffer[pyloop] PASSED +tests/test_client_functional.py::test_upgrade_connection_not_released_after_read[pyloop] PASSED +tests/test_client_functional.py::test_wait_for[pyloop] PASSED +tests/test_client_functional.py::test_yield_from_in_session_request[pyloop] PASSED tests/test_client_proto.py::test_client_proto_bad_message[pyloop] PASSED -tests/test_client_proto.py::test_uncompleted_message[pyloop] PASSED tests/test_client_proto.py::test_client_protocol_readuntil_eof[pyloop] PASSED -tests/test_client_proto.py::test_empty_data[pyloop] PASSED -tests/test_client_proto.py::test_schedule_timeout[pyloop] PASSED +tests/test_client_proto.py::test_connection_lost_sets_transport_to_none[pyloop] PASSED tests/test_client_proto.py::test_drop_timeout[pyloop] PASSED -tests/test_client_proto.py::test_reschedule_timeout[pyloop] PASSED +tests/test_client_proto.py::test_empty_data[pyloop] PASSED tests/test_client_proto.py::test_eof_received[pyloop] PASSED -tests/test_client_proto.py::test_connection_lost_sets_transport_to_none[pyloop] PASSED -tests/test_client_request.py::test_method1[pyloop] PASSED -tests/test_client_request.py::test_method2[pyloop] PASSED -tests/test_client_request.py::test_method3[pyloop] PASSED -tests/test_client_request.py::test_method_invalid[pyloop] PASSED -tests/test_client_request.py::test_version_1_0[pyloop] PASSED -tests/test_client_request.py::test_version_default[pyloop] PASSED -tests/test_client_request.py::test_request_info[pyloop] PASSED -tests/test_client_request.py::test_request_info_with_fragment[pyloop] PASSED -tests/test_client_request.py::test_version_err[pyloop] PASSED -tests/test_client_request.py::test_keep_alive[pyloop] PASSED -tests/test_client_request.py::test_host_port_default_http[pyloop] PASSED -tests/test_client_request.py::test_host_port_default_https[pyloop] PASSED -tests/test_client_request.py::test_host_port_nondefault_http[pyloop] PASSED -tests/test_client_request.py::test_host_port_nondefault_https[pyloop] PASSED -tests/test_client_request.py::test_host_port_default_ws[pyloop] PASSED -tests/test_client_request.py::test_host_port_default_wss[pyloop] PASSED -tests/test_client_request.py::test_host_port_nondefault_ws[pyloop] PASSED -tests/test_client_request.py::test_host_port_nondefault_wss[pyloop] PASSED -tests/test_client_request.py::test_host_port_none_port[pyloop] PASSED -tests/test_client_request.py::test_host_port_err[pyloop] PASSED -tests/test_client_request.py::test_hostname_err[pyloop] PASSED -tests/test_client_request.py::test_host_header_host_first[pyloop] PASSED -tests/test_client_request.py::test_host_header_host_without_port[pyloop] PASSED -tests/test_client_request.py::test_host_header_host_with_default_port[pyloop] PASSED -tests/test_client_request.py::test_host_header_host_with_nondefault_port[pyloop] PASSED -tests/test_client_request.py::test_host_header_host_idna_encode[pyloop] PASSED -tests/test_client_request.py::test_host_header_host_unicode[pyloop] PASSED -tests/test_client_request.py::test_host_header_explicit_host[pyloop] PASSED -tests/test_client_request.py::test_host_header_explicit_host_with_port[pyloop] PASSED -tests/test_client_request.py::test_host_header_ipv4[pyloop] PASSED -tests/test_client_request.py::test_host_header_ipv6[pyloop-True] PASSED -tests/test_client_request.py::test_host_header_ipv6[pyloop-False] PASSED -tests/test_client_request.py::test_host_header_ipv4_with_port[pyloop] PASSED -tests/test_client_request.py::test_host_header_ipv6_with_port[pyloop] PASSED -tests/test_client_request.py::test_default_loop[pyloop] PASSED -tests/test_client_request.py::test_host_header_fqdn[pyloop-dot only at the end] PASSED -tests/test_client_request.py::test_host_header_fqdn[pyloop-single dot] PASSED -tests/test_client_request.py::test_host_header_fqdn[pyloop-single dot with port] PASSED -tests/test_client_request.py::test_host_header_fqdn[pyloop-multiple dots with port] PASSED -tests/test_client_request.py::test_host_header_fqdn[pyloop-explicit host header] PASSED -tests/test_client_request.py::test_host_header_fqdn[pyloop-https] PASSED -tests/test_client_request.py::test_host_header_fqdn[pyloop-only dots] PASSED -tests/test_client_request.py::test_host_header_fqdn[pyloop-single dot with port idna] PASSED -tests/test_client_request.py::test_default_headers_useragent[pyloop] PASSED -tests/test_client_request.py::test_default_headers_useragent_custom[pyloop] PASSED -tests/test_client_request.py::test_skip_default_useragent_header[pyloop] PASSED +tests/test_client_proto.py::test_oserror[pyloop] PASSED +tests/test_client_proto.py::test_pause_resume_on_error[pyloop] PASSED +tests/test_client_proto.py::test_reschedule_timeout[pyloop] PASSED +tests/test_client_proto.py::test_schedule_timeout[pyloop] PASSED +tests/test_client_proto.py::test_uncompleted_message[pyloop] PASSED +tests/test_client_request.py::test_bad_fingerprint[pyloop] PASSED +tests/test_client_request.py::test_bad_version[pyloop] PASSED +tests/test_client_request.py::test_basic_auth[pyloop] PASSED +tests/test_client_request.py::test_basic_auth_from_url[pyloop] PASSED +tests/test_client_request.py::test_basic_auth_from_url_overridden[pyloop] PASSED +tests/test_client_request.py::test_basic_auth_no_user_from_url[pyloop] PASSED +tests/test_client_request.py::test_basic_auth_tuple_forbidden[pyloop] PASSED +tests/test_client_request.py::test_basic_auth_utf8[pyloop] PASSED +tests/test_client_request.py::test_basicauth_from_empty_netrc[pyloop-] PASSED +tests/test_client_request.py::test_basicauth_from_netrc_present[pyloop-machine example.com login username password pass\n-expected_auth0] PASSED +tests/test_client_request.py::test_basicauth_from_netrc_present_untrusted_env[pyloop-machine example.com login username password pass\n] PASSED +tests/test_client_request.py::test_bytes_data[pyloop] PASSED +tests/test_client_request.py::test_cancel_close[pyloop] SKIPPED +tests/test_client_request.py::test_chunked2[pyloop] PASSED +tests/test_client_request.py::test_chunked[pyloop] PASSED +tests/test_client_request.py::test_chunked_explicit[pyloop] PASSED +tests/test_client_request.py::test_chunked_length[pyloop] PASSED +tests/test_client_request.py::test_chunked_transfer_encoding[pyloop] PASSED +tests/test_client_request.py::test_close[pyloop] PASSED +tests/test_client_request.py::test_compress_and_content_encoding[pyloop] PASSED +tests/test_client_request.py::test_connection_header[pyloop] PASSED +tests/test_client_request.py::test_connection_key_with_proxy PASSED +tests/test_client_request.py::test_connection_key_without_proxy PASSED +tests/test_client_request.py::test_content_encoding[pyloop] PASSED +tests/test_client_request.py::test_content_encoding_dont_set_headers_if_no_body[pyloop] PASSED +tests/test_client_request.py::test_content_encoding_header[pyloop] PASSED +tests/test_client_request.py::test_content_type_auto_header_bytes[pyloop] PASSED +tests/test_client_request.py::test_content_type_auto_header_content_length_no_skip[pyloop] PASSED +tests/test_client_request.py::test_content_type_auto_header_form[pyloop] PASSED +tests/test_client_request.py::test_content_type_auto_header_get[pyloop] PASSED +tests/test_client_request.py::test_content_type_skip_auto_header_bytes[pyloop] PASSED +tests/test_client_request.py::test_content_type_skip_auto_header_form[pyloop] PASSED +tests/test_client_request.py::test_cookies[pyloop] PASSED +tests/test_client_request.py::test_cookies_is_quoted_with_special_characters[pyloop] PASSED +tests/test_client_request.py::test_cookies_merge_with_headers[pyloop] PASSED +tests/test_client_request.py::test_custom_req_rep[pyloop] PASSED +tests/test_client_request.py::test_custom_response_class[pyloop] PASSED +tests/test_client_request.py::test_data_continue[pyloop] PASSED +tests/test_client_request.py::test_data_file[pyloop] PASSED +tests/test_client_request.py::test_data_stream[pyloop] PASSED +tests/test_client_request.py::test_data_stream_continue[pyloop] PASSED +tests/test_client_request.py::test_data_stream_deprecated[pyloop] PASSED +tests/test_client_request.py::test_data_stream_exc[pyloop] PASSED +tests/test_client_request.py::test_data_stream_exc_chain[pyloop] PASSED +tests/test_client_request.py::test_default_headers_useragent[pyloop] PASSED +tests/test_client_request.py::test_default_headers_useragent_custom[pyloop] PASSED +tests/test_client_request.py::test_default_loop[pyloop] PASSED +tests/test_client_request.py::test_expect100[pyloop] PASSED +tests/test_client_request.py::test_expect_100_continue_header[pyloop] PASSED +tests/test_client_request.py::test_file_upload_force_chunked[pyloop] PASSED +tests/test_client_request.py::test_file_upload_not_chunked[pyloop] PASSED +tests/test_client_request.py::test_file_upload_not_chunked_seek[pyloop] PASSED +tests/test_client_request.py::test_gen_default_accept_encoding[False-gzip, deflate] PASSED +tests/test_client_request.py::test_gen_default_accept_encoding[True-gzip, deflate, br] PASSED +tests/test_client_request.py::test_gen_netloc_all[pyloop] PASSED +tests/test_client_request.py::test_gen_netloc_no_port[pyloop] PASSED +tests/test_client_request.py::test_get_with_data[pyloop] PASSED tests/test_client_request.py::test_headers[pyloop] PASSED -tests/test_client_request.py::test_headers_list[pyloop] PASSED tests/test_client_request.py::test_headers_default[pyloop] PASSED +tests/test_client_request.py::test_headers_list[pyloop] PASSED +tests/test_client_request.py::test_host_header_explicit_host[pyloop] PASSED +tests/test_client_request.py::test_host_header_explicit_host_with_port[pyloop] PASSED +tests/test_client_request.py::test_host_header_fqdn[pyloop-dot only at the end] PASSED +tests/test_client_request.py::test_host_header_fqdn[pyloop-explicit host header] PASSED +tests/test_client_request.py::test_host_header_fqdn[pyloop-https] PASSED +tests/test_client_request.py::test_host_header_fqdn[pyloop-multiple dots with port] PASSED +tests/test_client_request.py::test_host_header_fqdn[pyloop-only dots] PASSED +tests/test_client_request.py::test_host_header_fqdn[pyloop-single dot with port idna] PASSED +tests/test_client_request.py::test_host_header_fqdn[pyloop-single dot with port] PASSED +tests/test_client_request.py::test_host_header_fqdn[pyloop-single dot] PASSED +tests/test_client_request.py::test_host_header_host_first[pyloop] PASSED +tests/test_client_request.py::test_host_header_host_idna_encode[pyloop] PASSED +tests/test_client_request.py::test_host_header_host_unicode[pyloop] PASSED +tests/test_client_request.py::test_host_header_host_with_default_port[pyloop] PASSED +tests/test_client_request.py::test_host_header_host_with_nondefault_port[pyloop] PASSED +tests/test_client_request.py::test_host_header_host_without_port[pyloop] PASSED +tests/test_client_request.py::test_host_header_ipv4[pyloop] PASSED +tests/test_client_request.py::test_host_header_ipv4_with_port[pyloop] PASSED +tests/test_client_request.py::test_host_header_ipv6[pyloop] PASSED +tests/test_client_request.py::test_host_header_ipv6_with_port[pyloop] PASSED +tests/test_client_request.py::test_host_port_default_http[pyloop] PASSED +tests/test_client_request.py::test_host_port_default_https[pyloop] PASSED +tests/test_client_request.py::test_host_port_default_ws[pyloop] PASSED +tests/test_client_request.py::test_host_port_default_wss[pyloop] PASSED +tests/test_client_request.py::test_host_port_err[pyloop] PASSED +tests/test_client_request.py::test_host_port_nondefault_http[pyloop] PASSED +tests/test_client_request.py::test_host_port_nondefault_https[pyloop] PASSED +tests/test_client_request.py::test_host_port_nondefault_ws[pyloop] PASSED +tests/test_client_request.py::test_host_port_nondefault_wss[pyloop] PASSED +tests/test_client_request.py::test_host_port_none_port[pyloop] PASSED +tests/test_client_request.py::test_hostname_err[pyloop] PASSED +tests/test_client_request.py::test_insecure_fingerprint_md5[pyloop] PASSED +tests/test_client_request.py::test_insecure_fingerprint_sha1[pyloop] PASSED tests/test_client_request.py::test_invalid_url[pyloop] PASSED -tests/test_client_request.py::test_no_path[pyloop] PASSED tests/test_client_request.py::test_ipv6_default_http_port[pyloop] PASSED tests/test_client_request.py::test_ipv6_default_https_port[pyloop] PASSED tests/test_client_request.py::test_ipv6_nondefault_http_port[pyloop] PASSED tests/test_client_request.py::test_ipv6_nondefault_https_port[pyloop] PASSED -tests/test_client_request.py::test_basic_auth[pyloop] PASSED -tests/test_client_request.py::test_basic_auth_utf8[pyloop] PASSED -tests/test_client_request.py::test_basic_auth_tuple_forbidden[pyloop] PASSED -tests/test_client_request.py::test_basic_auth_from_url[pyloop] PASSED -tests/test_client_request.py::test_basic_auth_no_user_from_url[pyloop] PASSED -tests/test_client_request.py::test_basic_auth_from_url_overridden[pyloop] PASSED +tests/test_client_request.py::test_keep_alive[pyloop] PASSED +tests/test_client_request.py::test_loose_cookies_types[pyloop] PASSED +tests/test_client_request.py::test_method1[pyloop] PASSED +tests/test_client_request.py::test_method2[pyloop] PASSED +tests/test_client_request.py::test_method3[pyloop] PASSED +tests/test_client_request.py::test_method_invalid[pyloop] PASSED +tests/test_client_request.py::test_no_content_length[pyloop] PASSED +tests/test_client_request.py::test_no_content_length_head[pyloop] PASSED +tests/test_client_request.py::test_no_path[pyloop] PASSED +tests/test_client_request.py::test_oserror_on_write_bytes[pyloop] PASSED +tests/test_client_request.py::test_params_are_added_before_fragment1[pyloop] PASSED +tests/test_client_request.py::test_params_are_added_before_fragment2[pyloop] PASSED +tests/test_client_request.py::test_params_empty_path_and_url[pyloop] PASSED +tests/test_client_request.py::test_params_update_path_and_url[pyloop] PASSED +tests/test_client_request.py::test_pass_falsy_data[pyloop] PASSED +tests/test_client_request.py::test_pass_falsy_data_file[pyloop] PASSED tests/test_client_request.py::test_path_is_not_double_encoded1[pyloop] PASSED tests/test_client_request.py::test_path_is_not_double_encoded2[pyloop] PASSED tests/test_client_request.py::test_path_is_not_double_encoded3[pyloop] PASSED -tests/test_client_request.py::test_path_safe_chars_preserved[pyloop] PASSED -tests/test_client_request.py::test_params_are_added_before_fragment1[pyloop] PASSED -tests/test_client_request.py::test_params_are_added_before_fragment2[pyloop] PASSED tests/test_client_request.py::test_path_not_contain_fragment1[pyloop] PASSED tests/test_client_request.py::test_path_not_contain_fragment2[pyloop] PASSED -tests/test_client_request.py::test_cookies[pyloop] PASSED -tests/test_client_request.py::test_cookies_is_quoted_with_special_characters[pyloop] PASSED -tests/test_client_request.py::test_cookies_merge_with_headers[pyloop] PASSED -tests/test_client_request.py::test_unicode_get1[pyloop] PASSED -tests/test_client_request.py::test_unicode_get2[pyloop] PASSED -tests/test_client_request.py::test_unicode_get3[pyloop] PASSED -tests/test_client_request.py::test_unicode_get4[pyloop] PASSED +tests/test_client_request.py::test_path_safe_chars_preserved[pyloop] PASSED +tests/test_client_request.py::test_post_data[pyloop] PASSED +tests/test_client_request.py::test_precompressed_data_stays_intact[pyloop] PASSED +tests/test_client_request.py::test_query_bytes_param_raises[pyloop] PASSED tests/test_client_request.py::test_query_multivalued_param[pyloop] PASSED tests/test_client_request.py::test_query_str_param[pyloop] PASSED -tests/test_client_request.py::test_query_bytes_param_raises[pyloop] PASSED tests/test_client_request.py::test_query_str_param_is_not_encoded[pyloop] PASSED -tests/test_client_request.py::test_params_update_path_and_url[pyloop] PASSED -tests/test_client_request.py::test_params_empty_path_and_url[pyloop] PASSED -tests/test_client_request.py::test_gen_netloc_all[pyloop] PASSED -tests/test_client_request.py::test_gen_netloc_no_port[pyloop] PASSED -tests/test_client_request.py::test_connection_header[pyloop] PASSED -tests/test_client_request.py::test_no_content_length[pyloop] PASSED -tests/test_client_request.py::test_no_content_length_head[pyloop] PASSED -tests/test_client_request.py::test_content_type_auto_header_get[pyloop] PASSED -tests/test_client_request.py::test_content_type_auto_header_form[pyloop] PASSED -tests/test_client_request.py::test_content_type_auto_header_bytes[pyloop] PASSED -tests/test_client_request.py::test_content_type_skip_auto_header_bytes[pyloop] PASSED -tests/test_client_request.py::test_content_type_skip_auto_header_form[pyloop] PASSED -tests/test_client_request.py::test_content_type_auto_header_content_length_no_skip[pyloop] PASSED -tests/test_client_request.py::test_urlencoded_formdata_charset[pyloop] PASSED -tests/test_client_request.py::test_post_data[pyloop] PASSED -tests/test_client_request.py::test_pass_falsy_data[pyloop] PASSED -tests/test_client_request.py::test_pass_falsy_data_file[pyloop] PASSED -tests/test_client_request.py::test_get_with_data[pyloop] PASSED -tests/test_client_request.py::test_bytes_data[pyloop] PASSED -tests/test_client_request.py::test_content_encoding[pyloop] PASSED -tests/test_client_request.py::test_content_encoding_dont_set_headers_if_no_body[pyloop] PASSED -tests/test_client_request.py::test_content_encoding_header[pyloop] PASSED -tests/test_client_request.py::test_compress_and_content_encoding[pyloop] PASSED -tests/test_client_request.py::test_chunked[pyloop] PASSED -tests/test_client_request.py::test_chunked2[pyloop] PASSED -tests/test_client_request.py::test_chunked_explicit[pyloop] PASSED -tests/test_client_request.py::test_chunked_length[pyloop] PASSED -tests/test_client_request.py::test_chunked_transfer_encoding[pyloop] PASSED -tests/test_client_request.py::test_file_upload_not_chunked[pyloop] PASSED -tests/test_client_request.py::test_precompressed_data_stays_intact[pyloop] PASSED -tests/test_client_request.py::test_file_upload_not_chunked_seek[pyloop] PASSED -tests/test_client_request.py::test_file_upload_force_chunked[pyloop] PASSED -tests/test_client_request.py::test_expect100[pyloop] PASSED -tests/test_client_request.py::test_expect_100_continue_header[pyloop] PASSED -tests/test_client_request.py::test_data_stream[pyloop] PASSED -tests/test_client_request.py::test_data_stream_deprecated[pyloop] PASSED -tests/test_client_request.py::test_data_file[pyloop] PASSED -tests/test_client_request.py::test_data_stream_exc[pyloop] PASSED -tests/test_client_request.py::test_data_stream_exc_chain[pyloop] PASSED -tests/test_client_request.py::test_data_stream_continue[pyloop] PASSED -tests/test_client_request.py::test_data_continue[pyloop] PASSED -tests/test_client_request.py::test_close[pyloop] PASSED -tests/test_client_request.py::test_bad_version[pyloop] PASSED -tests/test_client_request.py::test_custom_response_class[pyloop] PASSED -tests/test_client_request.py::test_oserror_on_write_bytes[pyloop] PASSED -tests/test_client_request.py::test_cancel_close[pyloop] SKIPPED (Needs -Task.cancelling()) +tests/test_client_request.py::test_request_info[pyloop] PASSED +tests/test_client_request.py::test_request_info_back_compat PASSED +tests/test_client_request.py::test_request_info_tuple_new PASSED +tests/test_client_request.py::test_request_info_with_fragment[pyloop] PASSED +tests/test_client_request.py::test_skip_default_useragent_header[pyloop] PASSED tests/test_client_request.py::test_terminate[pyloop] PASSED tests/test_client_request.py::test_terminate_with_closed_loop[pyloop] PASSED tests/test_client_request.py::test_terminate_without_writer[pyloop] PASSED -tests/test_client_request.py::test_custom_req_rep[pyloop] PASSED +tests/test_client_request.py::test_unicode_get1[pyloop] PASSED +tests/test_client_request.py::test_unicode_get2[pyloop] PASSED +tests/test_client_request.py::test_unicode_get3[pyloop] PASSED +tests/test_client_request.py::test_unicode_get4[pyloop] PASSED +tests/test_client_request.py::test_urlencoded_formdata_charset[pyloop] PASSED tests/test_client_request.py::test_verify_ssl_false_with_ssl_context[pyloop] PASSED -tests/test_client_request.py::test_bad_fingerprint[pyloop] PASSED -tests/test_client_request.py::test_insecure_fingerprint_md5[pyloop] PASSED -tests/test_client_request.py::test_insecure_fingerprint_sha1[pyloop] PASSED -tests/test_client_request.py::test_loose_cookies_types[pyloop] PASSED -tests/test_client_request.py::test_gen_default_accept_encoding[False-gzip, deflate] PASSED -tests/test_client_request.py::test_gen_default_accept_encoding[True-gzip, deflate, br] PASSED -tests/test_client_request.py::test_basicauth_from_netrc_present[pyloop-machine example.com login username password pass\n-expected_auth0] PASSED -tests/test_client_request.py::test_basicauth_from_netrc_present_untrusted_env[pyloop-machine example.com login username password pass\n] PASSED -tests/test_client_request.py::test_basicauth_from_empty_netrc[pyloop-] PASSED -tests/test_client_request.py::test_connection_key_with_proxy PASSED -tests/test_client_request.py::test_connection_key_without_proxy PASSED -tests/test_client_response.py::test_http_processing_error PASSED -tests/test_client_response.py::test_del PASSED +tests/test_client_request.py::test_version_1_0[pyloop] PASSED +tests/test_client_request.py::test_version_default[pyloop] PASSED +tests/test_client_request.py::test_version_err[pyloop] PASSED +tests/test_client_response.py::test_charset PASSED +tests/test_client_response.py::test_charset_no_charset PASSED +tests/test_client_response.py::test_charset_no_header PASSED tests/test_client_response.py::test_close[pyloop] PASSED -tests/test_client_response.py::test_wait_for_100_1[pyloop] PASSED -tests/test_client_response.py::test_wait_for_100_2[pyloop] PASSED -tests/test_client_response.py::test_repr[pyloop] PASSED -tests/test_client_response.py::test_repr_non_ascii_url PASSED -tests/test_client_response.py::test_repr_non_ascii_reason PASSED -tests/test_client_response.py::test_url_obj_deprecated PASSED -tests/test_client_response.py::test_read_and_release_connection[pyloop] PASSED -tests/test_client_response.py::test_read_and_release_connection_with_error[pyloop] PASSED -tests/test_client_response.py::test_release[pyloop] PASSED -tests/test_client_response.py::test_release_on_del[pyloop] PASSED -tests/test_client_response.py::test_response_eof[pyloop] PASSED -tests/test_client_response.py::test_response_eof_upgraded[pyloop] PASSED -tests/test_client_response.py::test_response_eof_after_connection_detach[pyloop] PASSED -tests/test_client_response.py::test_text[pyloop] PASSED -tests/test_client_response.py::test_text_bad_encoding[pyloop] PASSED -tests/test_client_response.py::test_text_badly_encoded_encoding_header[pyloop] PASSED -tests/test_client_response.py::test_text_custom_encoding[pyloop] PASSED -tests/test_client_response.py::test_text_charset_resolver[pyloop-text/plain] PASSED -tests/test_client_response.py::test_text_charset_resolver[pyloop-text/plain;charset=invalid] PASSED +tests/test_client_response.py::test_content_disposition_full PASSED +tests/test_client_response.py::test_content_disposition_no_header PASSED +tests/test_client_response.py::test_content_disposition_no_parameters PASSED +tests/test_client_response.py::test_content_type PASSED +tests/test_client_response.py::test_content_type_no_header PASSED +tests/test_client_response.py::test_del PASSED tests/test_client_response.py::test_get_encoding_body_none[pyloop] PASSED -tests/test_client_response.py::test_text_after_read[pyloop] PASSED +tests/test_client_response.py::test_get_encoding_unknown[pyloop] PASSED +tests/test_client_response.py::test_http_processing_error PASSED tests/test_client_response.py::test_json[pyloop] PASSED -tests/test_client_response.py::test_json_extended_content_type[pyloop] PASSED tests/test_client_response.py::test_json_custom_content_type[pyloop] PASSED tests/test_client_response.py::test_json_custom_loader[pyloop] PASSED +tests/test_client_response.py::test_json_extended_content_type[pyloop] PASSED tests/test_client_response.py::test_json_invalid_content_type[pyloop] PASSED tests/test_client_response.py::test_json_no_content[pyloop] PASSED tests/test_client_response.py::test_json_override_encoding[pyloop] PASSED -tests/test_client_response.py::test_get_encoding_unknown[pyloop] PASSED +tests/test_client_response.py::test_no_redirect_history_in_exception PASSED tests/test_client_response.py::test_raise_for_status_2xx PASSED tests/test_client_response.py::test_raise_for_status_4xx PASSED tests/test_client_response.py::test_raise_for_status_4xx_without_reason PASSED -tests/test_client_response.py::test_resp_host PASSED -tests/test_client_response.py::test_content_type PASSED -tests/test_client_response.py::test_content_type_no_header PASSED -tests/test_client_response.py::test_charset PASSED -tests/test_client_response.py::test_charset_no_header PASSED -tests/test_client_response.py::test_charset_no_charset PASSED -tests/test_client_response.py::test_content_disposition_full PASSED -tests/test_client_response.py::test_content_disposition_no_parameters PASSED -tests/test_client_response.py::test_content_disposition_no_header PASSED -tests/test_client_response.py::test_response_request_info PASSED -tests/test_client_response.py::test_request_info_in_exception PASSED -tests/test_client_response.py::test_no_redirect_history_in_exception PASSED +tests/test_client_response.py::test_read_and_release_connection[pyloop] PASSED +tests/test_client_response.py::test_read_and_release_connection_with_error[pyloop] PASSED tests/test_client_response.py::test_redirect_history_in_exception PASSED -tests/test_client_response.py::test_response_read_triggers_callback[pyloop] PASSED -tests/test_client_response.py::test_response_real_url[pyloop] PASSED -tests/test_client_response.py::test_response_links_comma_separated[pyloop] PASSED -tests/test_client_response.py::test_response_links_multiple_headers[pyloop] PASSED +tests/test_client_response.py::test_release[pyloop] PASSED +tests/test_client_response.py::test_release_on_del[pyloop] PASSED +tests/test_client_response.py::test_repr[pyloop] PASSED +tests/test_client_response.py::test_repr_non_ascii_reason PASSED +tests/test_client_response.py::test_repr_non_ascii_url PASSED +tests/test_client_response.py::test_request_info_in_exception PASSED +tests/test_client_response.py::test_resp_host PASSED +tests/test_client_response.py::test_response_eof[pyloop] PASSED +tests/test_client_response.py::test_response_eof_after_connection_detach[pyloop] PASSED +tests/test_client_response.py::test_response_eof_upgraded[pyloop] PASSED +tests/test_client_response.py::test_response_links_comma_separated[pyloop] PASSED +tests/test_client_response.py::test_response_links_empty[pyloop] PASSED +tests/test_client_response.py::test_response_links_multiple_headers[pyloop] PASSED tests/test_client_response.py::test_response_links_no_rel[pyloop] PASSED tests/test_client_response.py::test_response_links_quoted[pyloop] PASSED tests/test_client_response.py::test_response_links_relative[pyloop] PASSED -tests/test_client_response.py::test_response_links_empty[pyloop] PASSED tests/test_client_response.py::test_response_not_closed_after_get_ok PASSED +tests/test_client_response.py::test_response_read_triggers_callback[pyloop] PASSED +tests/test_client_response.py::test_response_real_url[pyloop] PASSED +tests/test_client_response.py::test_response_request_info PASSED +tests/test_client_response.py::test_text[pyloop] PASSED +tests/test_client_response.py::test_text_after_read[pyloop] PASSED +tests/test_client_response.py::test_text_bad_encoding[pyloop] PASSED +tests/test_client_response.py::test_text_badly_encoded_encoding_header[pyloop] PASSED +tests/test_client_response.py::test_text_charset_resolver[pyloop-text/plain;charset=invalid] PASSED +tests/test_client_response.py::test_text_charset_resolver[pyloop-text/plain] PASSED +tests/test_client_response.py::test_text_custom_encoding[pyloop] PASSED +tests/test_client_response.py::test_url_obj_deprecated PASSED +tests/test_client_response.py::test_wait_for_100_1[pyloop] PASSED +tests/test_client_response.py::test_wait_for_100_2[pyloop] PASSED +tests/test_client_session.py::test_base_url_without_trailing_slash PASSED +tests/test_client_session.py::test_borrow_connector_loop[pyloop] PASSED +tests/test_client_session.py::test_build_url_returns_expected_url[pyloop-base_url='http://example.com' url='/test'] PASSED +tests/test_client_session.py::test_build_url_returns_expected_url[pyloop-base_url=None url='http://example.com/test'] PASSED +tests/test_client_session.py::test_build_url_returns_expected_url[pyloop-base_url=None url=URL('http://example.com/test')] PASSED +tests/test_client_session.py::test_build_url_returns_expected_url[pyloop-base_url=URL('http://example.com') url='/test'] PASSED +tests/test_client_session.py::test_build_url_returns_expected_url[pyloop-base_url=URL('http://example.com/test1/') url='/test2'] PASSED +tests/test_client_session.py::test_build_url_returns_expected_url[pyloop-base_url=URL('http://example.com/test1/') url='test2'] PASSED +tests/test_client_session.py::test_build_url_returns_expected_url[pyloop-base_url=URL('http://example.com/test1/') url='test2?q=foo#bar'] PASSED +tests/test_client_session.py::test_client_session_custom_attr[pyloop] SKIPPED +tests/test_client_session.py::test_client_session_inheritance PASSED +tests/test_client_session.py::test_client_session_timeout_args[pyloop] PASSED +tests/test_client_session.py::test_client_session_timeout_bad_argument PASSED +tests/test_client_session.py::test_client_session_timeout_default_args[pyloop] PASSED +tests/test_client_session.py::test_client_session_timeout_zero[pyloop] PASSED +tests/test_client_session.py::test_close[pyloop] PASSED +tests/test_client_session.py::test_close_conn_on_error[pyloop] PASSED tests/test_client_session.py::test_close_coro[pyloop] PASSED -tests/test_client_session.py::test_init_headers_simple_dict[pyloop] PASSED -tests/test_client_session.py::test_init_headers_list_of_tuples[pyloop] PASSED +tests/test_client_session.py::test_close_flag_for_closed_connector[pyloop] PASSED +tests/test_client_session.py::test_closed[pyloop] PASSED +tests/test_client_session.py::test_connector[pyloop] PASSED +tests/test_client_session.py::test_connector_loop[pyloop] PASSED +tests/test_client_session.py::test_cookie_jar_usage[pyloop] PASSED +tests/test_client_session.py::test_create_connector[pyloop] PASSED +tests/test_client_session.py::test_default_proxy[pyloop] PASSED +tests/test_client_session.py::test_del[pyloop] PASSED +tests/test_client_session.py::test_del_debug[pyloop] PASSED +tests/test_client_session.py::test_detach[pyloop] PASSED +tests/test_client_session.py::test_double_close[pyloop] PASSED +tests/test_client_session.py::test_http_DELETE[pyloop] PASSED +tests/test_client_session.py::test_http_GET[pyloop] PASSED +tests/test_client_session.py::test_http_HEAD[pyloop] PASSED +tests/test_client_session.py::test_http_OPTIONS[pyloop] PASSED +tests/test_client_session.py::test_http_PATCH[pyloop] PASSED +tests/test_client_session.py::test_http_POST[pyloop] PASSED +tests/test_client_session.py::test_http_PUT[pyloop] PASSED +tests/test_client_session.py::test_init_cookies_with_list_of_tuples[pyloop] PASSED +tests/test_client_session.py::test_init_cookies_with_simple_dict[pyloop] PASSED tests/test_client_session.py::test_init_headers_MultiDict[pyloop] PASSED +tests/test_client_session.py::test_init_headers_list_of_tuples[pyloop] PASSED tests/test_client_session.py::test_init_headers_list_of_tuples_with_duplicates[pyloop] PASSED -tests/test_client_session.py::test_init_cookies_with_simple_dict[pyloop] PASSED -tests/test_client_session.py::test_init_cookies_with_list_of_tuples[pyloop] PASSED +tests/test_client_session.py::test_init_headers_simple_dict[pyloop] PASSED +tests/test_client_session.py::test_instantiation_with_invalid_timeout_value[pyloop] PASSED tests/test_client_session.py::test_merge_headers[pyloop] PASSED -tests/test_client_session.py::test_merge_headers_with_multi_dict[pyloop] PASSED tests/test_client_session.py::test_merge_headers_with_list_of_tuples[pyloop] PASSED tests/test_client_session.py::test_merge_headers_with_list_of_tuples_duplicated_names[pyloop] PASSED -tests/test_client_session.py::test_http_GET[pyloop] PASSED -tests/test_client_session.py::test_http_OPTIONS[pyloop] PASSED -tests/test_client_session.py::test_http_HEAD[pyloop] PASSED -tests/test_client_session.py::test_http_POST[pyloop] PASSED -tests/test_client_session.py::test_http_PUT[pyloop] PASSED -tests/test_client_session.py::test_http_PATCH[pyloop] PASSED -tests/test_client_session.py::test_http_DELETE[pyloop] PASSED -tests/test_client_session.py::test_close[pyloop] PASSED -tests/test_client_session.py::test_closed[pyloop] PASSED -tests/test_client_session.py::test_connector[pyloop] PASSED -tests/test_client_session.py::test_create_connector[pyloop] PASSED -tests/test_client_session.py::test_connector_loop[pyloop] PASSED -tests/test_client_session.py::test_detach[pyloop] PASSED +tests/test_client_session.py::test_merge_headers_with_multi_dict[pyloop] PASSED +tests/test_client_session.py::test_properties[pyloop-auth-_default_auth] PASSED +tests/test_client_session.py::test_properties[pyloop-connector_owner-_connector_owner] PASSED +tests/test_client_session.py::test_properties[pyloop-json_serialize-_json_serialize] PASSED +tests/test_client_session.py::test_properties[pyloop-raise_for_status-_raise_for_status] PASSED +tests/test_client_session.py::test_properties[pyloop-skip_auto_headers-_skip_auto_headers] PASSED +tests/test_client_session.py::test_properties[pyloop-trace_configs-_trace_configs] PASSED +tests/test_client_session.py::test_properties[pyloop-trust_env-_trust_env] PASSED +tests/test_client_session.py::test_proxy_str[pyloop] PASSED tests/test_client_session.py::test_request_closed_session[pyloop] PASSED -tests/test_client_session.py::test_close_flag_for_closed_connector[pyloop] PASSED -tests/test_client_session.py::test_double_close[pyloop] PASSED -tests/test_client_session.py::test_del[pyloop] PASSED -tests/test_client_session.py::test_del_debug[pyloop] PASSED -tests/test_client_session.py::test_session_context_manager[pyloop] PASSED -tests/test_client_session.py::test_borrow_connector_loop[pyloop] PASSED +tests/test_client_session.py::test_request_tracing[pyloop] PASSED +tests/test_client_session.py::test_request_tracing_exception PASSED +tests/test_client_session.py::test_request_tracing_interpose_headers[pyloop] PASSED +tests/test_client_session.py::test_request_tracing_url_params[pyloop] PASSED +tests/test_client_session.py::test_requote_redirect_setter PASSED +tests/test_client_session.py::test_requote_redirect_url_default PASSED +tests/test_client_session.py::test_requote_redirect_url_default_disable PASSED tests/test_client_session.py::test_reraise_os_error[pyloop] PASSED -tests/test_client_session.py::test_close_conn_on_error[pyloop] PASSED +tests/test_client_session.py::test_session_context_manager[pyloop] PASSED +tests/test_client_session.py::test_session_default_version[pyloop] PASSED +tests/test_client_session.py::test_session_loop[pyloop] PASSED tests/test_client_session.py::test_ws_connect_allowed_protocols[pyloop-http] PASSED tests/test_client_session.py::test_ws_connect_allowed_protocols[pyloop-https] PASSED tests/test_client_session.py::test_ws_connect_allowed_protocols[pyloop-ws] PASSED tests/test_client_session.py::test_ws_connect_allowed_protocols[pyloop-wss] PASSED tests/test_client_session.py::test_ws_connect_unix_socket_allowed_protocols[pyloop-http] PASSED tests/test_client_session.py::test_ws_connect_unix_socket_allowed_protocols[pyloop-https] PASSED +tests/test_client_session.py::test_ws_connect_unix_socket_allowed_protocols[pyloop-unix] PASSED tests/test_client_session.py::test_ws_connect_unix_socket_allowed_protocols[pyloop-ws] PASSED tests/test_client_session.py::test_ws_connect_unix_socket_allowed_protocols[pyloop-wss] PASSED -tests/test_client_session.py::test_ws_connect_unix_socket_allowed_protocols[pyloop-unix] PASSED -tests/test_client_session.py::test_cookie_jar_usage[pyloop] PASSED -tests/test_client_session.py::test_session_default_version[pyloop] PASSED -tests/test_client_session.py::test_session_loop[pyloop] PASSED -tests/test_client_session.py::test_proxy_str[pyloop] PASSED -tests/test_client_session.py::test_request_tracing[pyloop] PASSED -tests/test_client_session.py::test_request_tracing_url_params[pyloop] PASSED -tests/test_client_session.py::test_request_tracing_exception PASSED -tests/test_client_session.py::test_request_tracing_interpose_headers[pyloop] PASSED -tests/test_client_session.py::test_client_session_inheritance PASSED -tests/test_client_session.py::test_client_session_custom_attr[pyloop] SKIPPED -tests/test_client_session.py::test_client_session_timeout_args[pyloop] PASSED -tests/test_client_session.py::test_client_session_timeout_default_args[pyloop] PASSED -tests/test_client_session.py::test_client_session_timeout_zero[pyloop] PASSED -tests/test_client_session.py::test_client_session_timeout_bad_argument PASSED -tests/test_client_session.py::test_requote_redirect_url_default PASSED -tests/test_client_session.py::test_requote_redirect_url_default_disable PASSED -tests/test_client_session.py::test_requote_redirect_setter PASSED -tests/test_client_session.py::test_build_url_returns_expected_url[pyloop-base_url=None url='http://example.com/test'] PASSED -tests/test_client_session.py::test_build_url_returns_expected_url[pyloop-base_url=None url=URL('http://example.com/test')] PASSED -tests/test_client_session.py::test_build_url_returns_expected_url[pyloop-base_url='http://example.com' url='/test'] PASSED -tests/test_client_session.py::test_build_url_returns_expected_url[pyloop-base_url=URL('http://example.com') url='/test'] PASSED -tests/test_client_session.py::test_instantiation_with_invalid_timeout_value[pyloop] PASSED -tests/test_client_session.py::test_properties[pyloop-skip_auto_headers-_skip_auto_headers] PASSED -tests/test_client_session.py::test_properties[pyloop-auth-_default_auth] PASSED -tests/test_client_session.py::test_properties[pyloop-json_serialize-_json_serialize] PASSED -tests/test_client_session.py::test_properties[pyloop-connector_owner-_connector_owner] PASSED -tests/test_client_session.py::test_properties[pyloop-raise_for_status-_raise_for_status] PASSED -tests/test_client_session.py::test_properties[pyloop-trust_env-_trust_env] PASSED -tests/test_client_session.py::test_properties[pyloop-trace_configs-_trace_configs] PASSED -tests/test_client_ws.py::test_ws_connect[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_read_timeout_is_reset_to_inf[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_read_timeout_stays_inf[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_read_timeout_reset_to_max[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_with_origin[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_with_params[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_custom_response[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_err_status[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_err_upgrade[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_err_conn[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_err_challenge[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_common_headers[pyloop] PASSED tests/test_client_ws.py::test_close[pyloop] PASSED -tests/test_client_ws.py::test_close_eofstream[pyloop] PASSED tests/test_client_ws.py::test_close_connection_lost[pyloop] PASSED -tests/test_client_ws.py::test_close_exc[pyloop] PASSED +tests/test_client_ws.py::test_close_eofstream[pyloop] PASSED tests/test_client_ws.py::test_close_exc2[pyloop] PASSED +tests/test_client_ws.py::test_close_exc[pyloop] PASSED +tests/test_client_ws.py::test_reader_read_exception[pyloop] PASSED +tests/test_client_ws.py::test_receive_runtime_err[pyloop] PASSED tests/test_client_ws.py::test_send_data_after_close[pyloop-ClientConnectionResetError] PASSED tests/test_client_ws.py::test_send_data_after_close[pyloop-ConnectionResetError] PASSED tests/test_client_ws.py::test_send_data_type_errors[pyloop] PASSED -tests/test_client_ws.py::test_reader_read_exception[pyloop] PASSED -tests/test_client_ws.py::test_receive_runtime_err[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect[pyloop] PASSED tests/test_client_ws.py::test_ws_connect_close_resp_on_err[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_non_overlapped_protocols[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_non_overlapped_protocols_2[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_common_headers[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_custom_response[pyloop] PASSED tests/test_client_ws.py::test_ws_connect_deflate[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_deflate_per_message[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_deflate_server_not_support[pyloop] PASSED -tests/test_client_ws.py::test_ws_connect_deflate_notakeover[pyloop] PASSED tests/test_client_ws.py::test_ws_connect_deflate_client_wbits[pyloop] PASSED tests/test_client_ws.py::test_ws_connect_deflate_client_wbits_bad[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_deflate_notakeover[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_deflate_per_message[pyloop] PASSED tests/test_client_ws.py::test_ws_connect_deflate_server_ext_bad[pyloop] PASSED -tests/test_client_ws_functional.py::test_send_recv_text[pyloop] PASSED -tests/test_client_ws_functional.py::test_send_recv_bytes_bad_type[pyloop] PASSED -tests/test_client_ws_functional.py::test_send_recv_bytes[pyloop] PASSED -tests/test_client_ws_functional.py::test_send_recv_text_bad_type[pyloop] PASSED -tests/test_client_ws_functional.py::test_send_recv_json[pyloop] PASSED -tests/test_client_ws_functional.py::test_ping_pong[pyloop] PASSED -tests/test_client_ws_functional.py::test_ping_pong_manual[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_deflate_server_not_support[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_err_challenge[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_err_conn[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_err_status[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_err_upgrade[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_non_overlapped_protocols[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_non_overlapped_protocols_2[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_read_timeout_is_reset_to_inf[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_read_timeout_reset_to_max[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_read_timeout_stays_inf[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_with_origin[pyloop] PASSED +tests/test_client_ws.py::test_ws_connect_with_params[pyloop] PASSED +tests/test_client_ws_functional.py::test_additional_headers[pyloop] PASSED tests/test_client_ws_functional.py::test_close[pyloop] PASSED +tests/test_client_ws_functional.py::test_close_cancel[pyloop] PASSED +tests/test_client_ws_functional.py::test_close_from_server[pyloop] PASSED +tests/test_client_ws_functional.py::test_close_manual[pyloop] PASSED +tests/test_client_ws_functional.py::test_close_timeout_deprecated[pyloop] PASSED +tests/test_client_ws_functional.py::test_close_timeout_sock_close_read[pyloop] PASSED +tests/test_client_ws_functional.py::test_close_websocket_while_ping_inflight[pyloop] PASSED +tests/test_client_ws_functional.py::test_closed_async_for[pyloop] PASSED tests/test_client_ws_functional.py::test_concurrent_close[pyloop] PASSED tests/test_client_ws_functional.py::test_concurrent_close_multiple_tasks[pyloop] PASSED tests/test_client_ws_functional.py::test_concurrent_task_close[pyloop] PASSED -tests/test_client_ws_functional.py::test_close_from_server[pyloop] PASSED -tests/test_client_ws_functional.py::test_close_manual[pyloop] PASSED -tests/test_client_ws_functional.py::test_close_timeout[pyloop] PASSED -tests/test_client_ws_functional.py::test_close_cancel[pyloop] PASSED -tests/test_client_ws_functional.py::test_override_default_headers[pyloop] PASSED -tests/test_client_ws_functional.py::test_additional_headers[pyloop] PASSED -tests/test_client_ws_functional.py::test_recv_protocol_error[pyloop] PASSED -tests/test_client_ws_functional.py::test_recv_timeout[pyloop] PASSED -tests/test_client_ws_functional.py::test_receive_timeout[pyloop] PASSED tests/test_client_ws_functional.py::test_custom_receive_timeout[pyloop] PASSED tests/test_client_ws_functional.py::test_heartbeat[pyloop] PASSED tests/test_client_ws_functional.py::test_heartbeat_connection_closed[pyloop] PASSED @@ -705,189 +713,195 @@ tests/test_client_ws_functional.py::test_heartbeat_no_pong[pyloop] PASSED tests/test_client_ws_functional.py::test_heartbeat_no_pong_after_receive_many_messages[pyloop] PASSED tests/test_client_ws_functional.py::test_heartbeat_no_pong_after_send_many_messages[pyloop] PASSED tests/test_client_ws_functional.py::test_heartbeat_no_pong_concurrent_receive[pyloop] PASSED -tests/test_client_ws_functional.py::test_close_websocket_while_ping_inflight[pyloop] PASSED +tests/test_client_ws_functional.py::test_override_default_headers[pyloop] PASSED +tests/test_client_ws_functional.py::test_peer_connection_lost[pyloop] PASSED +tests/test_client_ws_functional.py::test_peer_connection_lost_iter[pyloop] PASSED +tests/test_client_ws_functional.py::test_ping_pong[pyloop] PASSED +tests/test_client_ws_functional.py::test_ping_pong_manual[pyloop] PASSED +tests/test_client_ws_functional.py::test_receive_timeout_deprecation[pyloop] PASSED +tests/test_client_ws_functional.py::test_receive_timeout_sock_read[pyloop] PASSED +tests/test_client_ws_functional.py::test_recv_bytes_after_close[pyloop] PASSED +tests/test_client_ws_functional.py::test_recv_protocol_error[pyloop] PASSED +tests/test_client_ws_functional.py::test_recv_text_after_close[pyloop] PASSED +tests/test_client_ws_functional.py::test_recv_timeout[pyloop] PASSED +tests/test_client_ws_functional.py::test_send_recv_bytes[pyloop] PASSED +tests/test_client_ws_functional.py::test_send_recv_bytes_bad_type[pyloop] PASSED tests/test_client_ws_functional.py::test_send_recv_compress[pyloop] PASSED -tests/test_client_ws_functional.py::test_send_recv_compress_wbits[pyloop] PASSED tests/test_client_ws_functional.py::test_send_recv_compress_wbit_error[pyloop] PASSED -tests/test_client_ws_functional.py::test_ws_client_async_for[pyloop] PASSED +tests/test_client_ws_functional.py::test_send_recv_compress_wbits[pyloop] PASSED +tests/test_client_ws_functional.py::test_send_recv_frame[pyloop] PASSED +tests/test_client_ws_functional.py::test_send_recv_json[pyloop] PASSED +tests/test_client_ws_functional.py::test_send_recv_text[pyloop] PASSED +tests/test_client_ws_functional.py::test_send_recv_text_bad_type[pyloop] PASSED +tests/test_client_ws_functional.py::test_websocket_connection_cancellation[pyloop] PASSED +tests/test_client_ws_functional.py::test_websocket_connection_not_closed_properly[pyloop] PASSED tests/test_client_ws_functional.py::test_ws_async_with[pyloop] PASSED tests/test_client_ws_functional.py::test_ws_async_with_send[pyloop] PASSED tests/test_client_ws_functional.py::test_ws_async_with_shortcut[pyloop] PASSED -tests/test_client_ws_functional.py::test_closed_async_for[pyloop] PASSED -tests/test_client_ws_functional.py::test_peer_connection_lost[pyloop] PASSED -tests/test_client_ws_functional.py::test_peer_connection_lost_iter[pyloop] PASSED +tests/test_client_ws_functional.py::test_ws_client_async_for[pyloop] PASSED tests/test_client_ws_functional.py::test_ws_connect_with_wrong_ssl_type[pyloop] PASSED -tests/test_connector.py::test_connection_del[pyloop] PASSED -tests/test_connector.py::test_connection_del_loop_debug[pyloop] PASSED -tests/test_connector.py::test_connection_del_loop_closed[pyloop] PASSED -tests/test_connector.py::test_del[pyloop] PASSED -tests/test_connector.py::test_del_with_scheduled_cleanup[pyloop] XFAIL -tests/test_connector.py::test_del_with_closed_loop[pyloop] PASSED -tests/test_connector.py::test_del_empty_connector[pyloop] PASSED -tests/test_connector.py::test_create_conn[pyloop] PASSED -tests/test_connector.py::test_connector_context_manager[pyloop] PASSED +tests/test_compression_utils.py::test_compression_round_trip_in_event_loop PASSED +tests/test_compression_utils.py::test_compression_round_trip_in_executor PASSED +tests/test_connector.py::TestDNSCacheTable::test_always_expire PASSED +tests/test_connector.py::TestDNSCacheTable::test_clear PASSED +tests/test_connector.py::TestDNSCacheTable::test_expired_ttl PASSED +tests/test_connector.py::TestDNSCacheTable::test_never_expire PASSED +tests/test_connector.py::TestDNSCacheTable::test_next_addrs PASSED +tests/test_connector.py::TestDNSCacheTable::test_next_addrs_basic PASSED +tests/test_connector.py::TestDNSCacheTable::test_next_addrs_single PASSED +tests/test_connector.py::TestDNSCacheTable::test_not_expired_ttl PASSED +tests/test_connector.py::TestDNSCacheTable::test_not_expired_ttl_None PASSED +tests/test_connector.py::TestDNSCacheTable::test_remove PASSED +tests/test_connector.py::test___get_ssl_context1 PASSED +tests/test_connector.py::test___get_ssl_context2[pyloop] PASSED +tests/test_connector.py::test___get_ssl_context3[pyloop] PASSED +tests/test_connector.py::test___get_ssl_context4[pyloop] PASSED +tests/test_connector.py::test___get_ssl_context5[pyloop] PASSED +tests/test_connector.py::test___get_ssl_context6 PASSED +tests/test_connector.py::test__release_acquired_per_host1[pyloop] PASSED +tests/test_connector.py::test__release_acquired_per_host2[pyloop] PASSED +tests/test_connector.py::test__release_acquired_per_host3[pyloop] PASSED tests/test_connector.py::test_async_context_manager[pyloop] PASSED +tests/test_connector.py::test_available_connections_no_limits PASSED +tests/test_connector.py::test_available_connections_with_limit_per_host PASSED +tests/test_connector.py::test_available_connections_without_limit_per_host[0] PASSED +tests/test_connector.py::test_available_connections_without_limit_per_host[10] PASSED +tests/test_connector.py::test_base_connector_allows_high_level_protocols[pyloop] PASSED +tests/test_connector.py::test_cancellation_during_waiting_for_free_connection[pyloop] PASSED +tests/test_connector.py::test_cancelled_waiter[pyloop] PASSED +tests/test_connector.py::test_cleanup PASSED +tests/test_connector.py::test_cleanup2[pyloop] PASSED +tests/test_connector.py::test_cleanup3[pyloop] PASSED +tests/test_connector.py::test_cleanup_close_ssl_transport[pyloop] PASSED +tests/test_connector.py::test_cleanup_closed[pyloop] PASSED +tests/test_connector.py::test_cleanup_closed_disabled[pyloop] PASSED +tests/test_connector.py::test_cleanup_closed_is_noop_on_fixed_cpython PASSED tests/test_connector.py::test_close[pyloop] PASSED -tests/test_connector.py::test_get[pyloop] PASSED -tests/test_connector.py::test_get_unconnected_proto[pyloop] PASSED -tests/test_connector.py::test_get_unconnected_proto_ssl[pyloop] PASSED -tests/test_connector.py::test_get_expired[pyloop] PASSED -tests/test_connector.py::test_get_expired_ssl[pyloop] PASSED -tests/test_connector.py::test_release_acquired[pyloop] PASSED -tests/test_connector.py::test_release_acquired_closed[pyloop] PASSED -tests/test_connector.py::test_release[pyloop] PASSED -tests/test_connector.py::test_release_ssl_transport[pyloop] PASSED -tests/test_connector.py::test_release_already_closed[pyloop] PASSED -tests/test_connector.py::test_release_waiter_no_limit[pyloop] PASSED -tests/test_connector.py::test_release_waiter_first_available[pyloop] PASSED -tests/test_connector.py::test_release_waiter_release_first[pyloop] PASSED -tests/test_connector.py::test_release_waiter_skip_done_waiter[pyloop] PASSED -tests/test_connector.py::test_release_waiter_per_host[pyloop] PASSED -tests/test_connector.py::test_release_waiter_no_available[pyloop] PASSED -tests/test_connector.py::test_release_close[pyloop] PASSED -tests/test_connector.py::test__drop_acquire_per_host1[pyloop] PASSED -tests/test_connector.py::test__drop_acquire_per_host2[pyloop] PASSED -tests/test_connector.py::test__drop_acquire_per_host3[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_certificate_error[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_server_hostname_default[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_server_hostname_override[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_multiple_hosts_errors[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_happy_eyeballs[pyloop-0.1] PASSED -tests/test_connector.py::test_tcp_connector_happy_eyeballs[pyloop-0.25] PASSED -tests/test_connector.py::test_tcp_connector_happy_eyeballs[pyloop-None] PASSED -tests/test_connector.py::test_tcp_connector_interleave[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_family_is_respected[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_multiple_hosts_one_timeout[pyloop-http://mocked.host] PASSED -tests/test_connector.py::test_tcp_connector_multiple_hosts_one_timeout[pyloop-https://mocked.host] PASSED -tests/test_connector.py::test_tcp_connector_resolve_host[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_dns_cache_not_expired[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_dns_cache_forever[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_use_dns_cache_disabled[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_dns_throttle_requests[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_dns_throttle_requests_exception_spread[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_dns_throttle_requests_cancelled_when_close[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_cancel_dns_error_captured[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_dns_tracing[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_dns_tracing_cache_disabled[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_dns_tracing_throttle_requests[pyloop] PASSED -tests/test_connector.py::test_dns_error[pyloop] PASSED -tests/test_connector.py::test_get_pop_empty_conns[pyloop] PASSED -tests/test_connector.py::test_release_close_do_not_add_to_pool[pyloop] PASSED -tests/test_connector.py::test_release_close_do_not_delete_existing_connections PASSED -tests/test_connector.py::test_release_not_started[pyloop] PASSED -tests/test_connector.py::test_release_not_opened[pyloop] PASSED -tests/test_connector.py::test_connect[pyloop] PASSED -tests/test_connector.py::test_connect_tracing[pyloop] PASSED -tests/test_connector.py::test_close_during_connect[pyloop] PASSED -tests/test_connector.py::test_ctor_cleanup PASSED -tests/test_connector.py::test_cleanup PASSED -tests/test_connector.py::test_cleanup_close_ssl_transport PASSED -tests/test_connector.py::test_cleanup2 PASSED -tests/test_connector.py::test_cleanup3 PASSED -tests/test_connector.py::test_cleanup_closed[pyloop] PASSED -tests/test_connector.py::test_cleanup_closed_disabled[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_ctor PASSED -tests/test_connector.py::test_tcp_connector_allowed_protocols[pyloop] PASSED -tests/test_connector.py::test_invalid_ssl_param PASSED -tests/test_connector.py::test_tcp_connector_ctor_fingerprint_valid[pyloop] PASSED -tests/test_connector.py::test_insecure_fingerprint_md5[pyloop] PASSED -tests/test_connector.py::test_insecure_fingerprint_sha1[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_clear_dns_cache[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_clear_dns_cache_bad_args[pyloop] PASSED -tests/test_connector.py::test___get_ssl_context1 PASSED -tests/test_connector.py::test___get_ssl_context2[pyloop] PASSED -tests/test_connector.py::test___get_ssl_context3[pyloop] PASSED -tests/test_connector.py::test___get_ssl_context4[pyloop] PASSED -tests/test_connector.py::test___get_ssl_context5[pyloop] PASSED -tests/test_connector.py::test___get_ssl_context6 PASSED -tests/test_connector.py::test_ssl_context_once PASSED -tests/test_connector.py::test_close_twice[pyloop] PASSED -tests/test_connector.py::test_close_cancels_cleanup_handle[pyloop] PASSED -tests/test_connector.py::test_close_cancels_resolve_host[pyloop] PASSED -tests/test_connector.py::test_multiple_dns_resolution_requests_success[pyloop] PASSED -tests/test_connector.py::test_multiple_dns_resolution_requests_failure[pyloop] PASSED -tests/test_connector.py::test_multiple_dns_resolution_requests_cancelled[pyloop] PASSED -tests/test_connector.py::test_multiple_dns_resolution_requests_first_cancelled[pyloop] PASSED -tests/test_connector.py::test_multiple_dns_resolution_requests_first_fails_second_successful[pyloop] PASSED tests/test_connector.py::test_close_abort_closed_transports[pyloop] PASSED tests/test_connector.py::test_close_cancels_cleanup_closed_handle[pyloop] PASSED -tests/test_connector.py::test_ctor_with_default_loop[pyloop] PASSED -tests/test_connector.py::test_base_connector_allows_high_level_protocols[pyloop] PASSED -tests/test_connector.py::test_connect_with_limit[pyloop] PASSED +tests/test_connector.py::test_close_cancels_cleanup_handle[pyloop] PASSED +tests/test_connector.py::test_close_cancels_resolve_host[pyloop] PASSED +tests/test_connector.py::test_close_during_connect[pyloop] PASSED +tests/test_connector.py::test_close_twice[pyloop] PASSED +tests/test_connector.py::test_close_with_acquired_connection[pyloop] PASSED +tests/test_connector.py::test_connect[pyloop] PASSED tests/test_connector.py::test_connect_queued_operation_tracing[pyloop] PASSED tests/test_connector.py::test_connect_reuseconn_tracing[pyloop] PASSED +tests/test_connector.py::test_connect_tracing[pyloop] PASSED +tests/test_connector.py::test_connect_waiters_cleanup[pyloop] PASSED +tests/test_connector.py::test_connect_waiters_cleanup_key_error[pyloop] PASSED +tests/test_connector.py::test_connect_with_capacity_release_waiters[pyloop] PASSED +tests/test_connector.py::test_connect_with_limit[pyloop] PASSED tests/test_connector.py::test_connect_with_limit_and_limit_per_host[pyloop] PASSED -tests/test_connector.py::test_connect_with_no_limit_and_limit_per_host[pyloop] PASSED -tests/test_connector.py::test_connect_with_no_limits[pyloop] PASSED tests/test_connector.py::test_connect_with_limit_cancelled[pyloop] PASSED -tests/test_connector.py::test_connect_with_capacity_release_waiters[pyloop] PASSED tests/test_connector.py::test_connect_with_limit_concurrent[pyloop] PASSED -tests/test_connector.py::test_connect_waiters_cleanup[pyloop] PASSED -tests/test_connector.py::test_connect_waiters_cleanup_key_error[pyloop] PASSED -tests/test_connector.py::test_close_with_acquired_connection[pyloop] PASSED +tests/test_connector.py::test_connect_with_no_limit_and_limit_per_host[pyloop] PASSED +tests/test_connector.py::test_connect_with_no_limits[pyloop] PASSED +tests/test_connector.py::test_connection_del[pyloop] PASSED +tests/test_connector.py::test_connection_del_loop_closed[pyloop] PASSED +tests/test_connector.py::test_connection_del_loop_debug[pyloop] PASSED +tests/test_connector.py::test_connector_cache_trace_race PASSED +tests/test_connector.py::test_connector_context_manager[pyloop] PASSED +tests/test_connector.py::test_connector_does_not_remove_needed_waiters[pyloop] PASSED +tests/test_connector.py::test_connector_multiple_event_loop PASSED +tests/test_connector.py::test_connector_throttle_trace_race[pyloop] PASSED +tests/test_connector.py::test_create_conn[pyloop] PASSED +tests/test_connector.py::test_ctor_cleanup PASSED +tests/test_connector.py::test_ctor_with_default_loop[pyloop] PASSED tests/test_connector.py::test_default_force_close[pyloop] PASSED -tests/test_connector.py::test_limit_property[pyloop] PASSED -tests/test_connector.py::test_limit_per_host_property[pyloop] PASSED -tests/test_connector.py::test_limit_property_default[pyloop] PASSED -tests/test_connector.py::test_limit_per_host_property_default[pyloop] PASSED -tests/test_connector.py::test_force_close_and_explicit_keep_alive[pyloop] PASSED +tests/test_connector.py::test_default_ssl_context_creation_without_ssl PASSED +tests/test_connector.py::test_default_use_dns_cache PASSED +tests/test_connector.py::test_del[pyloop] PASSED +tests/test_connector.py::test_del_empty_connector[pyloop] PASSED +tests/test_connector.py::test_del_with_closed_loop[pyloop] PASSED +tests/test_connector.py::test_del_with_scheduled_cleanup[pyloop] XFAIL +tests/test_connector.py::test_dns_error[pyloop] PASSED tests/test_connector.py::test_error_on_connection[pyloop] PASSED -tests/test_connector.py::test_cancelled_waiter[pyloop] PASSED tests/test_connector.py::test_error_on_connection_with_cancelled_waiter[pyloop] PASSED -tests/test_connector.py::test_tcp_connector[pyloop] PASSED -tests/test_connector.py::test_unix_connector_not_found[pyloop] PASSED -tests/test_connector.py::test_unix_connector_permission[pyloop] PASSED -tests/test_connector.py::test_named_pipe_connector_wrong_loop SKIPPED +tests/test_connector.py::test_exception_during_connection_queued_tracing[pyloop] PASSED +tests/test_connector.py::test_exception_during_connection_reuse_tracing[pyloop] PASSED +tests/test_connector.py::test_exception_during_connetion_create_tracing[pyloop-on_connection_create_end] PASSED +tests/test_connector.py::test_exception_during_connetion_create_tracing[pyloop-on_connection_create_start] PASSED +tests/test_connector.py::test_force_close_and_explicit_keep_alive[pyloop] PASSED +tests/test_connector.py::test_get[pyloop] PASSED +tests/test_connector.py::test_get_expired[pyloop] PASSED +tests/test_connector.py::test_get_expired_ssl[pyloop] PASSED +tests/test_connector.py::test_get_pop_empty_conns[pyloop] PASSED +tests/test_connector.py::test_get_unconnected_proto[pyloop] PASSED +tests/test_connector.py::test_get_unconnected_proto_ssl[pyloop] PASSED +tests/test_connector.py::test_insecure_fingerprint_md5[pyloop] PASSED +tests/test_connector.py::test_insecure_fingerprint_sha1[pyloop] PASSED +tests/test_connector.py::test_invalid_ssl_param PASSED +tests/test_connector.py::test_limit_per_host_property[pyloop] PASSED +tests/test_connector.py::test_limit_per_host_property_default[pyloop] PASSED +tests/test_connector.py::test_limit_property[pyloop] PASSED +tests/test_connector.py::test_limit_property_default[pyloop] PASSED +tests/test_connector.py::test_multiple_dns_resolution_requests_cancelled[pyloop] PASSED +tests/test_connector.py::test_multiple_dns_resolution_requests_failure[pyloop] PASSED +tests/test_connector.py::test_multiple_dns_resolution_requests_first_cancelled[pyloop] PASSED +tests/test_connector.py::test_multiple_dns_resolution_requests_first_fails_second_successful[pyloop] PASSED +tests/test_connector.py::test_multiple_dns_resolution_requests_success[pyloop] PASSED +tests/test_connector.py::test_named_pipe_connector SKIPPED tests/test_connector.py::test_named_pipe_connector_not_found SKIPPED tests/test_connector.py::test_named_pipe_connector_permission SKIPPED -tests/test_connector.py::test_default_use_dns_cache PASSED -tests/test_connector.py::test_ssl_none PASSED +tests/test_connector.py::test_named_pipe_connector_wrong_loop SKIPPED +tests/test_connector.py::test_release[pyloop] PASSED +tests/test_connector.py::test_release_acquired[pyloop] PASSED +tests/test_connector.py::test_release_acquired_closed[pyloop] PASSED +tests/test_connector.py::test_release_already_closed[pyloop] PASSED +tests/test_connector.py::test_release_close[pyloop] PASSED +tests/test_connector.py::test_release_close_do_not_add_to_pool[pyloop] PASSED +tests/test_connector.py::test_release_close_do_not_delete_existing_connections PASSED +tests/test_connector.py::test_release_not_opened[pyloop] PASSED +tests/test_connector.py::test_release_not_started[pyloop] PASSED +tests/test_connector.py::test_release_ssl_transport[pyloop] PASSED +tests/test_connector.py::test_release_waiter_first_available[pyloop] PASSED +tests/test_connector.py::test_release_waiter_no_available[pyloop] PASSED +tests/test_connector.py::test_release_waiter_no_limit[pyloop] PASSED +tests/test_connector.py::test_release_waiter_per_host[pyloop] PASSED +tests/test_connector.py::test_release_waiter_release_first[pyloop] PASSED +tests/test_connector.py::test_release_waiter_skip_done_waiter[pyloop] PASSED tests/test_connector.py::test_resolver_not_called_with_address_is_ip[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_raise_connector_ssl_error[pyloop] PASSED -tests/test_connector.py::test_tcp_connector_do_not_raise_connector_ssl_error[pyloop-ip address] PASSED +tests/test_connector.py::test_ssl_context_once PASSED +tests/test_connector.py::test_ssl_none PASSED +tests/test_connector.py::test_tcp_connector[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_allowed_protocols[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_cancel_dns_error_captured[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_certificate_error[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_clear_dns_cache[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_clear_dns_cache_bad_args[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_ctor PASSED +tests/test_connector.py::test_tcp_connector_ctor_fingerprint_valid[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_dns_cache_forever[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_dns_cache_not_expired[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_dns_throttle_requests[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_dns_throttle_requests_cancelled_when_close[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_dns_throttle_requests_exception_spread[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_dns_tracing[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_dns_tracing_cache_disabled[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_dns_tracing_throttle_requests[pyloop] PASSED tests/test_connector.py::test_tcp_connector_do_not_raise_connector_ssl_error[pyloop-domain name] PASSED -tests/test_connector.py::test_tcp_connector_do_not_raise_connector_ssl_error[pyloop-fully-qualified domain name] PASSED tests/test_connector.py::test_tcp_connector_do_not_raise_connector_ssl_error[pyloop-fully-qualified domain name with multiple trailing dots] PASSED +tests/test_connector.py::test_tcp_connector_do_not_raise_connector_ssl_error[pyloop-fully-qualified domain name] PASSED tests/test_connector.py::test_tcp_connector_do_not_raise_connector_ssl_error[pyloop-idna fully-qualified domain name] PASSED +tests/test_connector.py::test_tcp_connector_do_not_raise_connector_ssl_error[pyloop-ip address] PASSED +tests/test_connector.py::test_tcp_connector_family_is_respected[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_happy_eyeballs[pyloop-0.1] PASSED +tests/test_connector.py::test_tcp_connector_happy_eyeballs[pyloop-0.25] PASSED +tests/test_connector.py::test_tcp_connector_happy_eyeballs[pyloop-None] PASSED +tests/test_connector.py::test_tcp_connector_interleave[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_multiple_hosts_errors[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_multiple_hosts_one_timeout[pyloop-http://mocked.host] PASSED +tests/test_connector.py::test_tcp_connector_multiple_hosts_one_timeout[pyloop-https://mocked.host] PASSED +tests/test_connector.py::test_tcp_connector_raise_connector_ssl_error[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_resolve_host[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_server_hostname_default[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_server_hostname_override[pyloop] PASSED +tests/test_connector.py::test_tcp_connector_use_dns_cache_disabled[pyloop] PASSED tests/test_connector.py::test_tcp_connector_uses_provided_local_addr[pyloop] PASSED tests/test_connector.py::test_unix_connector[pyloop] PASSED -tests/test_connector.py::test_named_pipe_connector SKIPPED (Proactor -Event loop present only in Windows) -tests/test_connector.py::TestDNSCacheTable::test_next_addrs_basic PASSED -tests/test_connector.py::TestDNSCacheTable::test_remove PASSED -tests/test_connector.py::TestDNSCacheTable::test_clear PASSED -tests/test_connector.py::TestDNSCacheTable::test_not_expired_ttl_None PASSED -tests/test_connector.py::TestDNSCacheTable::test_not_expired_ttl PASSED -tests/test_connector.py::TestDNSCacheTable::test_expired_ttl PASSED -tests/test_connector.py::TestDNSCacheTable::test_never_expire PASSED -tests/test_connector.py::TestDNSCacheTable::test_always_expire PASSED -tests/test_connector.py::TestDNSCacheTable::test_next_addrs PASSED -tests/test_connector.py::TestDNSCacheTable::test_next_addrs_single PASSED -tests/test_connector.py::test_connector_cache_trace_race PASSED -tests/test_connector.py::test_connector_throttle_trace_race[pyloop] PASSED -tests/test_connector.py::test_connector_does_not_remove_needed_waiters[pyloop] PASSED -tests/test_connector.py::test_connector_multiple_event_loop PASSED -tests/test_connector.py::test_default_ssl_context_creation_without_ssl PASSED -tests/test_cookiejar.py::test_date_parsing PASSED -tests/test_cookiejar.py::test_domain_matching PASSED -tests/test_cookiejar.py::test_constructor[pyloop] PASSED -tests/test_cookiejar.py::test_constructor_with_expired[pyloop] PASSED -tests/test_cookiejar.py::test_save_load[pyloop] PASSED -tests/test_cookiejar.py::test_update_cookie_with_unicode_domain[pyloop] PASSED -tests/test_cookiejar.py::test_filter_cookie_with_unicode_domain[pyloop] PASSED -tests/test_cookiejar.py::test_filter_cookies_with_domain_path_lookup_multilevelpath[pyloop-http://pathtest.com/one/two/-expected_cookies0] PASSED -tests/test_cookiejar.py::test_filter_cookies_with_domain_path_lookup_multilevelpath[pyloop-http://pathtest.com/one/two-expected_cookies1] PASSED -tests/test_cookiejar.py::test_filter_cookies_with_domain_path_lookup_multilevelpath[pyloop-http://pathtest.com/one/two/three/-expected_cookies2] PASSED -tests/test_cookiejar.py::test_filter_cookies_with_domain_path_lookup_multilevelpath[pyloop-http://test1.example.com/-expected_cookies3] PASSED -tests/test_cookiejar.py::test_filter_cookies_with_domain_path_lookup_multilevelpath[pyloop-http://pathtest.com/-expected_cookies4] PASSED -tests/test_cookiejar.py::test_domain_filter_ip_cookie_send PASSED -tests/test_cookiejar.py::test_domain_filter_ip_cookie_receive PASSED -tests/test_cookiejar.py::test_quotes_correctly_based_on_input[pyloop-IP domain preserved] PASSED -tests/test_cookiejar.py::test_quotes_correctly_based_on_input[pyloop-no shared cookie] PASSED -tests/test_cookiejar.py::test_quotes_correctly_based_on_input[pyloop-quoted cookie with special char] PASSED -tests/test_cookiejar.py::test_quotes_correctly_based_on_input[pyloop-quoted cookie w/o special char] PASSED -tests/test_cookiejar.py::test_quotes_correctly_based_on_input[pyloop-unquoted cookie with special char] PASSED -tests/test_cookiejar.py::test_ignore_domain_ending_with_dot[pyloop] PASSED +tests/test_connector.py::test_unix_connector_not_found[pyloop] PASSED +tests/test_connector.py::test_unix_connector_permission[pyloop] PASSED tests/test_cookiejar.py::TestCookieJarSafe::test_cookie_not_expired_when_added_after_removal PASSED tests/test_cookiejar.py::TestCookieJarSafe::test_domain_filter_diff_host PASSED tests/test_cookiejar.py::TestCookieJarSafe::test_domain_filter_host_only PASSED @@ -907,107 +921,107 @@ tests/test_cookiejar.py::TestCookieJarSafe::test_path_filter_subfolder PASSED tests/test_cookiejar.py::TestCookieJarSafe::test_path_filter_subsubfolder PASSED tests/test_cookiejar.py::TestCookieJarSafe::test_path_value PASSED tests/test_cookiejar.py::TestCookieJarSafe::test_secure_filter PASSED -tests/test_cookiejar.py::test_dummy_cookie_jar PASSED -tests/test_cookiejar.py::test_loose_cookies_types PASSED +tests/test_cookiejar.py::test_constructor[pyloop] PASSED +tests/test_cookiejar.py::test_constructor_with_expired[pyloop] PASSED tests/test_cookiejar.py::test_cookie_jar_clear_all PASSED +tests/test_cookiejar.py::test_cookie_jar_clear_domain PASSED tests/test_cookiejar.py::test_cookie_jar_clear_expired PASSED -tests/test_cookiejar.py::test_cookie_jar_expired_changes PASSED tests/test_cookiejar.py::test_cookie_jar_duplicates_with_expire_heap PASSED +tests/test_cookiejar.py::test_cookie_jar_expired_changes PASSED tests/test_cookiejar.py::test_cookie_jar_filter_cookies_expires PASSED tests/test_cookiejar.py::test_cookie_jar_heap_cleanup PASSED tests/test_cookiejar.py::test_cookie_jar_heap_maintains_order_after_cleanup PASSED -tests/test_cookiejar.py::test_cookie_jar_clear_domain PASSED +tests/test_cookiejar.py::test_date_parsing PASSED +tests/test_cookiejar.py::test_domain_filter_ip_cookie_receive PASSED +tests/test_cookiejar.py::test_domain_filter_ip_cookie_send PASSED +tests/test_cookiejar.py::test_domain_matching PASSED +tests/test_cookiejar.py::test_dummy_cookie_jar PASSED +tests/test_cookiejar.py::test_filter_cookie_with_unicode_domain[pyloop] PASSED +tests/test_cookiejar.py::test_filter_cookies_str_deprecated[pyloop] PASSED +tests/test_cookiejar.py::test_filter_cookies_with_domain_path_lookup_multilevelpath[pyloop-http://pathtest.com/-expected_cookies4] PASSED +tests/test_cookiejar.py::test_filter_cookies_with_domain_path_lookup_multilevelpath[pyloop-http://pathtest.com/one/two-expected_cookies1] PASSED +tests/test_cookiejar.py::test_filter_cookies_with_domain_path_lookup_multilevelpath[pyloop-http://pathtest.com/one/two/-expected_cookies0] PASSED +tests/test_cookiejar.py::test_filter_cookies_with_domain_path_lookup_multilevelpath[pyloop-http://pathtest.com/one/two/three/-expected_cookies2] PASSED +tests/test_cookiejar.py::test_filter_cookies_with_domain_path_lookup_multilevelpath[pyloop-http://test1.example.com/-expected_cookies3] PASSED +tests/test_cookiejar.py::test_ignore_domain_ending_with_dot[pyloop] PASSED +tests/test_cookiejar.py::test_loose_cookies_types PASSED tests/test_cookiejar.py::test_pickle_format PASSED -tests/test_cookiejar.py::test_treat_as_secure_origin_init[http://127.0.0.1/index.html] PASSED -tests/test_cookiejar.py::test_treat_as_secure_origin_init[url1] PASSED -tests/test_cookiejar.py::test_treat_as_secure_origin_init[url2] PASSED -tests/test_cookiejar.py::test_treat_as_secure_origin_init[url3] PASSED -tests/test_cookiejar.py::test_treat_as_secure_origin PASSED -tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_read[pyloop] PASSED +tests/test_cookiejar.py::test_quotes_correctly_based_on_input[pyloop-IP domain preserved] PASSED +tests/test_cookiejar.py::test_quotes_correctly_based_on_input[pyloop-no shared cookie] PASSED +tests/test_cookiejar.py::test_quotes_correctly_based_on_input[pyloop-quoted cookie w/o special char] PASSED +tests/test_cookiejar.py::test_quotes_correctly_based_on_input[pyloop-quoted cookie with special char] PASSED +tests/test_cookiejar.py::test_quotes_correctly_based_on_input[pyloop-unquoted cookie with special char] PASSED +tests/test_cookiejar.py::test_save_load[pyloop] PASSED +tests/test_cookiejar.py::test_treat_as_secure_origin PASSED +tests/test_cookiejar.py::test_treat_as_secure_origin_init[http://127.0.0.1/index.html] PASSED +tests/test_cookiejar.py::test_treat_as_secure_origin_init[url1] PASSED +tests/test_cookiejar.py::test_treat_as_secure_origin_init[url2] PASSED +tests/test_cookiejar.py::test_treat_as_secure_origin_init[url3] PASSED +tests/test_cookiejar.py::test_update_cookie_with_unicode_domain[pyloop] PASSED +tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_feed_data[pyloop] PASSED +tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_read[pyloop] PASSED +tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_read_nowait[pyloop] PASSED tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_read_resume_paused[pyloop] PASSED -tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_readline[pyloop] PASSED -tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_readline_resume_paused[pyloop] PASSED tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_readany[pyloop] PASSED tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_readany_resume_paused[pyloop] PASSED tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_readchunk[pyloop] PASSED tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_readchunk_resume_paused[pyloop] PASSED tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_readexactly[pyloop] PASSED -tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_feed_data[pyloop] PASSED -tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_read_nowait[pyloop] PASSED -tests/test_flowcontrol_streams.py::TestFlowControlDataQueue::test_feed_pause[pyloop] PASSED -tests/test_flowcontrol_streams.py::TestFlowControlDataQueue::test_resume_on_read[pyloop] PASSED +tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_readline[pyloop] PASSED +tests/test_flowcontrol_streams.py::TestFlowControlStreamReader::test_readline_resume_paused[pyloop] PASSED +tests/test_formdata.py::test_form_data_is_multipart_param PASSED +tests/test_formdata.py::test_formdata_field_name_is_not_quoted PASSED +tests/test_formdata.py::test_formdata_field_name_is_quoted PASSED tests/test_formdata.py::test_formdata_multipart PASSED -tests/test_formdata.py::test_invalid_formdata_payload PASSED -tests/test_formdata.py::test_invalid_formdata_params PASSED -tests/test_formdata.py::test_invalid_formdata_params2 PASSED tests/test_formdata.py::test_formdata_textio_charset PASSED +tests/test_formdata.py::test_invalid_formdata_content_transfer_encoding PASSED tests/test_formdata.py::test_invalid_formdata_content_type PASSED tests/test_formdata.py::test_invalid_formdata_filename PASSED -tests/test_formdata.py::test_invalid_formdata_content_transfer_encoding PASSED -tests/test_formdata.py::test_formdata_field_name_is_quoted PASSED -tests/test_formdata.py::test_formdata_field_name_is_not_quoted PASSED +tests/test_formdata.py::test_invalid_formdata_params PASSED +tests/test_formdata.py::test_invalid_formdata_params2 PASSED +tests/test_formdata.py::test_invalid_formdata_payload PASSED tests/test_formdata.py::test_mark_formdata_as_processed[pyloop] PASSED -tests/test_helpers.py::test_parse_mimetype[-expected0] PASSED -tests/test_helpers.py::test_parse_mimetype[*-expected1] PASSED -tests/test_helpers.py::test_parse_mimetype[application/json-expected2] PASSED -tests/test_helpers.py::test_parse_mimetype[application/json; charset=utf-8-expected3] PASSED -tests/test_helpers.py::test_parse_mimetype[application/json; charset=utf-8;-expected4] PASSED -tests/test_helpers.py::test_parse_mimetype[ApPlIcAtIoN/JSON;ChaRseT="UTF-8"-expected5] PASSED -tests/test_helpers.py::test_parse_mimetype[application/rss+xml-expected6] PASSED -tests/test_helpers.py::test_parse_mimetype[text/plain;base64-expected7] PASSED -tests/test_helpers.py::test_guess_filename_with_file_object PASSED -tests/test_helpers.py::test_guess_filename_with_path PASSED -tests/test_helpers.py::test_guess_filename_with_default PASSED +tests/test_helpers.py::TestChainMapProxy::test_bool PASSED +tests/test_helpers.py::TestChainMapProxy::test_contains PASSED +tests/test_helpers.py::TestChainMapProxy::test_get PASSED +tests/test_helpers.py::TestChainMapProxy::test_get_default PASSED +tests/test_helpers.py::TestChainMapProxy::test_get_non_default PASSED +tests/test_helpers.py::TestChainMapProxy::test_getitem PASSED +tests/test_helpers.py::TestChainMapProxy::test_getitem_not_found PASSED +tests/test_helpers.py::TestChainMapProxy::test_inheritance PASSED +tests/test_helpers.py::TestChainMapProxy::test_iter PASSED +tests/test_helpers.py::TestChainMapProxy::test_len PASSED +tests/test_helpers.py::TestChainMapProxy::test_repr PASSED tests/test_helpers.py::test_basic_auth1 PASSED tests/test_helpers.py::test_basic_auth2 PASSED -tests/test_helpers.py::test_basic_with_auth_colon_in_login PASSED tests/test_helpers.py::test_basic_auth3 PASSED tests/test_helpers.py::test_basic_auth4 PASSED tests/test_helpers.py::test_basic_auth_decode[Basic bmtpbTpwd2Q=] PASSED tests/test_helpers.py::test_basic_auth_decode[basic bmtpbTpwd2Q=] PASSED -tests/test_helpers.py::test_basic_auth_invalid PASSED -tests/test_helpers.py::test_basic_auth_decode_not_basic PASSED tests/test_helpers.py::test_basic_auth_decode_bad_base64 PASSED -tests/test_helpers.py::test_basic_auth_decode_illegal_chars_base64[Basic ???] PASSED -tests/test_helpers.py::test_basic_auth_decode_illegal_chars_base64[Basic ] PASSED -tests/test_helpers.py::test_basic_auth_decode_invalid_credentials PASSED tests/test_helpers.py::test_basic_auth_decode_blank_username[:-expected_auth0] PASSED -tests/test_helpers.py::test_basic_auth_decode_blank_username[username:-expected_auth1] PASSED tests/test_helpers.py::test_basic_auth_decode_blank_username[:password-expected_auth2] PASSED +tests/test_helpers.py::test_basic_auth_decode_blank_username[username:-expected_auth1] PASSED tests/test_helpers.py::test_basic_auth_decode_blank_username[username:password-expected_auth3] PASSED +tests/test_helpers.py::test_basic_auth_decode_illegal_chars_base64[Basic ] PASSED +tests/test_helpers.py::test_basic_auth_decode_illegal_chars_base64[Basic ???] PASSED +tests/test_helpers.py::test_basic_auth_decode_invalid_credentials PASSED +tests/test_helpers.py::test_basic_auth_decode_not_basic PASSED +tests/test_helpers.py::test_basic_auth_from_not_url PASSED tests/test_helpers.py::test_basic_auth_from_url PASSED -tests/test_helpers.py::test_basic_auth_no_user_from_url PASSED +tests/test_helpers.py::test_basic_auth_invalid PASSED tests/test_helpers.py::test_basic_auth_no_auth_from_url PASSED -tests/test_helpers.py::test_basic_auth_from_not_url PASSED -tests/test_helpers.py::TestPyReify::test_reify PASSED -tests/test_helpers.py::TestPyReify::test_reify_class PASSED -tests/test_helpers.py::TestPyReify::test_reify_assignment PASSED -tests/test_helpers.py::TestCReify::test_reify PASSED -tests/test_helpers.py::TestCReify::test_reify_class PASSED -tests/test_helpers.py::TestCReify::test_reify_assignment PASSED -tests/test_helpers.py::test_is_ip_address PASSED -tests/test_helpers.py::test_is_ip_address_bytes PASSED -tests/test_helpers.py::test_ipv4_addresses PASSED -tests/test_helpers.py::test_ipv6_addresses PASSED -tests/test_helpers.py::test_host_addresses PASSED -tests/test_helpers.py::test_is_ip_address_invalid_type PASSED -tests/test_helpers.py::test_timeout_handle[pyloop] PASSED -tests/test_helpers.py::test_when_timeout_smaller_second[pyloop] PASSED -tests/test_helpers.py::test_when_timeout_smaller_second_with_low_threshold[pyloop] PASSED -tests/test_helpers.py::test_timeout_handle_cb_exc[pyloop] PASSED -tests/test_helpers.py::test_timer_context_not_cancelled PASSED -tests/test_helpers.py::test_timer_context_timeout_does_not_leak_upward SKIPPED -tests/test_helpers.py::test_timer_context_timeout_does_swallow_cancellation SKIPPED -tests/test_helpers.py::test_timer_context_no_task[pyloop] PASSED -tests/test_helpers.py::test_weakref_handle[pyloop] PASSED -tests/test_helpers.py::test_weakref_handle_with_small_threshold[pyloop] PASSED -tests/test_helpers.py::test_weakref_handle_weak[pyloop] PASSED +tests/test_helpers.py::test_basic_auth_no_user_from_url PASSED +tests/test_helpers.py::test_basic_with_auth_colon_in_login PASSED +tests/test_helpers.py::test_basicauth_present_in_netrc[machine example.com account username password pass\n-expected_auth1] PASSED +tests/test_helpers.py::test_basicauth_present_in_netrc[machine example.com login username password pass\n-expected_auth0] PASSED +tests/test_helpers.py::test_basicauth_present_in_netrc[machine example.com password pass\n-expected_auth2] PASSED +tests/test_helpers.py::test_ceil_call_later_no_timeout PASSED +tests/test_helpers.py::test_ceil_call_later_with_small_threshold PASSED tests/test_helpers.py::test_ceil_timeout PASSED +tests/test_helpers.py::test_ceil_timeout_none[pyloop] PASSED tests/test_helpers.py::test_ceil_timeout_round PASSED tests/test_helpers.py::test_ceil_timeout_small PASSED -tests/test_helpers.py::test_ceil_call_later_with_small_threshold PASSED -tests/test_helpers.py::test_ceil_call_later_no_timeout PASSED -tests/test_helpers.py::test_ceil_timeout_none[pyloop] PASSED tests/test_helpers.py::test_ceil_timeout_small_with_overriden_threshold[pyloop] PASSED tests/test_helpers.py::test_content_disposition[kwargs0-attachment; foo="bar"] PASSED tests/test_helpers.py::test_content_disposition[kwargs1-attachment; foo="bar[]"] PASSED @@ -1019,475 +1033,242 @@ tests/test_helpers.py::test_content_disposition[kwargs6-attachment; filename="b% tests/test_helpers.py::test_content_disposition[kwargs7-attachment; filename="b%E4r"] PASSED tests/test_helpers.py::test_content_disposition[kwargs8-attachment; filename="b\xe4r \\"\\\\"] PASSED tests/test_helpers.py::test_content_disposition_bad_type PASSED -tests/test_helpers.py::test_set_content_disposition_bad_param PASSED +tests/test_helpers.py::test_get_env_proxy_for_url[url_scheme_match_http_proxy_list] PASSED +tests/test_helpers.py::test_get_env_proxy_for_url[url_scheme_match_http_proxy_list_multiple] PASSED +tests/test_helpers.py::test_get_env_proxy_for_url[url_scheme_match_https_proxy_list] PASSED +tests/test_helpers.py::test_get_env_proxy_for_url_negative[no_proxies_are_set] PASSED +tests/test_helpers.py::test_get_env_proxy_for_url_negative[url_is_empty] PASSED +tests/test_helpers.py::test_get_env_proxy_for_url_negative[url_matches_the_no_proxy_list] PASSED +tests/test_helpers.py::test_get_env_proxy_for_url_negative[url_matches_the_no_proxy_list_multiple] PASSED +tests/test_helpers.py::test_get_env_proxy_for_url_negative[url_scheme_does_not_match_http_proxy_list] PASSED +tests/test_helpers.py::test_get_env_proxy_for_url_negative[url_scheme_does_not_match_https_proxy_list] PASSED +tests/test_helpers.py::test_guess_filename_with_default PASSED +tests/test_helpers.py::test_guess_filename_with_file_object PASSED +tests/test_helpers.py::test_guess_filename_with_path PASSED +tests/test_helpers.py::test_host_addresses PASSED +tests/test_helpers.py::test_ipv4_addresses PASSED +tests/test_helpers.py::test_ipv6_addresses PASSED +tests/test_helpers.py::test_is_ip_address PASSED +tests/test_helpers.py::test_is_ip_address_invalid_type PASSED +tests/test_helpers.py::test_method_must_be_empty_body PASSED +tests/test_helpers.py::test_netrc_from_env[machine example.com login username password pass\n-username] PASSED +tests/test_helpers.py::test_netrc_from_home_does_not_raise_if_access_denied PASSED +tests/test_helpers.py::test_parse_http_date[Tue, 08 Oct 2000 00:56:40 +0900-expected4] PASSED +tests/test_helpers.py::test_parse_http_date[Tue, 08 Oct 2000 00:56:40 GMT-expected3] PASSED +tests/test_helpers.py::test_parse_http_date[Tue, 08 Oct 2000 00:56:80 GMT-None] PASSED +tests/test_helpers.py::test_parse_http_date[Tue, 08 Oct 4446413 00:56:40 GMT-None] PASSED +tests/test_helpers.py::test_parse_http_date[xxyyzz-None] PASSED +tests/test_helpers.py::test_parse_mimetype[*-expected1] PASSED +tests/test_helpers.py::test_parse_mimetype[-expected0] PASSED +tests/test_helpers.py::test_parse_mimetype[ApPlIcAtIoN/JSON;ChaRseT="UTF-8"-expected5] PASSED +tests/test_helpers.py::test_parse_mimetype[application/json-expected2] PASSED +tests/test_helpers.py::test_parse_mimetype[application/json; charset=utf-8-expected3] PASSED +tests/test_helpers.py::test_parse_mimetype[application/json; charset=utf-8;-expected4] PASSED +tests/test_helpers.py::test_parse_mimetype[application/rss+xml-expected6] PASSED +tests/test_helpers.py::test_parse_mimetype[text/plain;base64-expected7] PASSED tests/test_helpers.py::test_proxies_from_env[http] PASSED tests/test_helpers.py::test_proxies_from_env[https] PASSED tests/test_helpers.py::test_proxies_from_env[ws] PASSED tests/test_helpers.py::test_proxies_from_env[wss] PASSED +tests/test_helpers.py::test_proxies_from_env_http_with_auth[http] PASSED tests/test_helpers.py::test_proxies_from_env_skipped[https] PASSED tests/test_helpers.py::test_proxies_from_env_skipped[wss] PASSED -tests/test_helpers.py::test_proxies_from_env_http_with_auth[http] PASSED -tests/test_helpers.py::test_get_env_proxy_for_url_negative[url_matches_the_no_proxy_list] PASSED -tests/test_helpers.py::test_get_env_proxy_for_url_negative[url_matches_the_no_proxy_list_multiple] PASSED -tests/test_helpers.py::test_get_env_proxy_for_url_negative[url_scheme_does_not_match_http_proxy_list] PASSED -tests/test_helpers.py::test_get_env_proxy_for_url_negative[url_scheme_does_not_match_https_proxy_list] PASSED -tests/test_helpers.py::test_get_env_proxy_for_url_negative[no_proxies_are_set] PASSED -tests/test_helpers.py::test_get_env_proxy_for_url_negative[url_is_empty] PASSED -tests/test_helpers.py::test_get_env_proxy_for_url[url_scheme_match_http_proxy_list] PASSED -tests/test_helpers.py::test_get_env_proxy_for_url[url_scheme_match_https_proxy_list] PASSED -tests/test_helpers.py::test_get_env_proxy_for_url[url_scheme_match_http_proxy_list_multiple] PASSED -tests/test_helpers.py::test_set_result[pyloop] PASSED -tests/test_helpers.py::test_set_result_cancelled[pyloop] PASSED +tests/test_helpers.py::test_read_basicauth_from_empty_netrc[] PASSED +tests/test_helpers.py::test_set_content_disposition_bad_param PASSED tests/test_helpers.py::test_set_exception[pyloop] PASSED tests/test_helpers.py::test_set_exception_cancelled[pyloop] PASSED -tests/test_helpers.py::TestChainMapProxy::test_inheritance PASSED -tests/test_helpers.py::TestChainMapProxy::test_getitem PASSED -tests/test_helpers.py::TestChainMapProxy::test_getitem_not_found PASSED -tests/test_helpers.py::TestChainMapProxy::test_get PASSED -tests/test_helpers.py::TestChainMapProxy::test_get_default PASSED -tests/test_helpers.py::TestChainMapProxy::test_get_non_default PASSED -tests/test_helpers.py::TestChainMapProxy::test_len PASSED -tests/test_helpers.py::TestChainMapProxy::test_iter PASSED -tests/test_helpers.py::TestChainMapProxy::test_contains PASSED -tests/test_helpers.py::TestChainMapProxy::test_bool PASSED -tests/test_helpers.py::TestChainMapProxy::test_repr PASSED -tests/test_helpers.py::test_parse_http_date[xxyyzz-None] PASSED -tests/test_helpers.py::test_parse_http_date[Tue, 08 Oct 4446413 00:56:40 GMT-None] PASSED -tests/test_helpers.py::test_parse_http_date[Tue, 08 Oct 2000 00:56:80 GMT-None] PASSED -tests/test_helpers.py::test_parse_http_date[Tue, 08 Oct 2000 00:56:40 GMT-expected3] PASSED -tests/test_helpers.py::test_parse_http_date[Tue, 08 Oct 2000 00:56:40 +0900-expected4] PASSED -tests/test_helpers.py::test_netrc_from_env[machine example.com login username password pass\n-username] PASSED -tests/test_helpers.py::test_netrc_from_home_does_not_raise_if_access_denied PASSED -tests/test_helpers.py::test_basicauth_present_in_netrc[machine example.com login username password pass\n-expected_auth0] PASSED -tests/test_helpers.py::test_basicauth_present_in_netrc[machine example.com account username password pass\n-expected_auth1] PASSED -tests/test_helpers.py::test_basicauth_present_in_netrc[machine example.com password pass\n-expected_auth2] PASSED -tests/test_helpers.py::test_read_basicauth_from_empty_netrc[] PASSED -tests/test_helpers.py::test_method_must_be_empty_body PASSED +tests/test_helpers.py::test_set_result[pyloop] PASSED +tests/test_helpers.py::test_set_result_cancelled[pyloop] PASSED tests/test_helpers.py::test_should_remove_content_length_is_subset_of_must_be_empty_body PASSED -tests/test_http_exceptions.py::TestHttpProcessingError::test_ctor PASSED -tests/test_http_exceptions.py::TestHttpProcessingError::test_pickle PASSED -tests/test_http_exceptions.py::TestHttpProcessingError::test_str PASSED -tests/test_http_exceptions.py::TestHttpProcessingError::test_repr PASSED +tests/test_helpers.py::test_timeout_handle[pyloop] PASSED +tests/test_helpers.py::test_timeout_handle_cb_exc[pyloop] PASSED +tests/test_helpers.py::test_timer_context_no_task[pyloop] PASSED +tests/test_helpers.py::test_timer_context_not_cancelled PASSED +tests/test_helpers.py::test_timer_context_timeout_does_not_leak_upward SKIPPED +tests/test_helpers.py::test_timer_context_timeout_does_swallow_cancellation SKIPPED +tests/test_helpers.py::test_weakref_handle[pyloop] PASSED +tests/test_helpers.py::test_weakref_handle_weak[pyloop] PASSED +tests/test_helpers.py::test_weakref_handle_with_small_threshold[pyloop] PASSED +tests/test_helpers.py::test_when_timeout_smaller_second[pyloop] PASSED +tests/test_helpers.py::test_when_timeout_smaller_second_with_low_threshold[pyloop] PASSED tests/test_http_exceptions.py::TestBadHttpMessage::test_ctor PASSED tests/test_http_exceptions.py::TestBadHttpMessage::test_pickle PASSED -tests/test_http_exceptions.py::TestBadHttpMessage::test_str PASSED tests/test_http_exceptions.py::TestBadHttpMessage::test_repr PASSED -tests/test_http_exceptions.py::TestLineTooLong::test_ctor PASSED -tests/test_http_exceptions.py::TestLineTooLong::test_pickle PASSED -tests/test_http_exceptions.py::TestLineTooLong::test_str PASSED -tests/test_http_exceptions.py::TestLineTooLong::test_repr PASSED -tests/test_http_exceptions.py::TestInvalidHeader::test_ctor PASSED -tests/test_http_exceptions.py::TestInvalidHeader::test_pickle PASSED -tests/test_http_exceptions.py::TestInvalidHeader::test_str PASSED -tests/test_http_exceptions.py::TestInvalidHeader::test_repr PASSED +tests/test_http_exceptions.py::TestBadHttpMessage::test_str PASSED tests/test_http_exceptions.py::TestBadStatusLine::test_ctor PASSED tests/test_http_exceptions.py::TestBadStatusLine::test_ctor2 PASSED tests/test_http_exceptions.py::TestBadStatusLine::test_pickle PASSED -tests/test_http_parser.py::test_c_parser_loaded PASSED -tests/test_http_parser.py::test_parse_headers[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_headers[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_reject_obsolete_line_folding[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_reject_obsolete_line_folding[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_invalid_character[pyloop] PASSED -tests/test_http_parser.py::test_invalid_linebreak[pyloop] PASSED -tests/test_http_parser.py::test_cve_2023_37276[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_cve_2023_37276[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-"] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-(] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-)] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-,] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-/] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-:] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-;] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-<] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-=] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop->] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-?] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-@] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-[] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-\\] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-]] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-{] PASSED -tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-}] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-"] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-(] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-)] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-,] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-/] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-:] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-;] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-<] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-=] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop->] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-?] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-@] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-[] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-\\] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-]] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-{] PASSED -tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-}] PASSED -tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Content-Length: -5] PASSED -tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Content-Length: +256] PASSED -tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Content-Length: \xb9] PASSED -tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Content-Length: \U0001d7d9] PASSED -tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Foo: abc\rdef] PASSED -tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Bar: abc\ndef] PASSED -tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Baz: abc\x00def] PASSED -tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Foo : bar] PASSED -tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Foo\t: bar] PASSED -tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-\xffoo: bar] PASSED -tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Content-Length: -5] PASSED -tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Content-Length: +256] PASSED -tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Content-Length: \xb9] PASSED -tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Content-Length: \U0001d7d9] PASSED -tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Foo: abc\rdef] PASSED -tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Bar: abc\ndef] PASSED +tests/test_http_exceptions.py::TestHttpProcessingError::test_ctor PASSED +tests/test_http_exceptions.py::TestHttpProcessingError::test_pickle PASSED +tests/test_http_exceptions.py::TestHttpProcessingError::test_repr PASSED +tests/test_http_exceptions.py::TestHttpProcessingError::test_str PASSED +tests/test_http_exceptions.py::TestInvalidHeader::test_ctor PASSED +tests/test_http_exceptions.py::TestInvalidHeader::test_pickle PASSED +tests/test_http_exceptions.py::TestInvalidHeader::test_repr PASSED +tests/test_http_exceptions.py::TestInvalidHeader::test_str PASSED +tests/test_http_exceptions.py::TestLineTooLong::test_ctor PASSED +tests/test_http_exceptions.py::TestLineTooLong::test_pickle PASSED +tests/test_http_exceptions.py::TestLineTooLong::test_repr PASSED +tests/test_http_exceptions.py::TestLineTooLong::test_str PASSED +tests/test_http_parser.py::TestDeflateBuffer::test_empty_body PASSED +tests/test_http_parser.py::TestDeflateBuffer::test_feed_data PASSED +tests/test_http_parser.py::TestDeflateBuffer::test_feed_data_err PASSED +tests/test_http_parser.py::TestDeflateBuffer::test_feed_eof PASSED +tests/test_http_parser.py::TestDeflateBuffer::test_feed_eof_err_deflate PASSED +tests/test_http_parser.py::TestDeflateBuffer::test_feed_eof_no_err_brotli PASSED +tests/test_http_parser.py::TestDeflateBuffer::test_feed_eof_no_err_gzip PASSED +tests/test_http_parser.py::TestParsePayload::test_http_payload_brotli PASSED +tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_deflate PASSED +tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_deflate_light PASSED +tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_deflate_no_hdrs PASSED +tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_deflate_split PASSED +tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_deflate_split_err PASSED +tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_length PASSED +tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_length_zero PASSED +tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_size_error PASSED +tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end PASSED +tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end2 PASSED +tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end_trailers PASSED +tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end_trailers2 PASSED +tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end_trailers3 PASSED +tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end_trailers4 PASSED +tests/test_http_parser.py::TestParsePayload::test_parse_eof_payload PASSED +tests/test_http_parser.py::TestParsePayload::test_parse_length_payload_eof PASSED +tests/test_http_parser.py::test_bad_chunked_c[pyloop] PASSED +tests/test_http_parser.py::test_bad_chunked_py[pyloop] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-"] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-(] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-)] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-,] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-/] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-:] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-;] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-<] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-=] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop->] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-?] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-@] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-[] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-\\] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-]] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-{] PASSED +tests/test_http_parser.py::test_bad_header_name[c-parser-pyloop-}] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-"] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-(] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-)] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-,] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-/] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-:] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-;] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-<] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-=] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop->] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-?] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-@] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-[] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-\\] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-]] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-{] PASSED +tests/test_http_parser.py::test_bad_header_name[py-parser-pyloop-}] PASSED +tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Bar: abc\ndef] PASSED tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Baz: abc\x00def] PASSED +tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Content-Length: +256] PASSED +tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Content-Length: -5] PASSED +tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Content-Length: \U0001d7d9] PASSED +tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Content-Length: \xb9] PASSED tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Foo : bar] PASSED +tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Foo: abc\rdef] PASSED tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-Foo\t: bar] PASSED tests/test_http_parser.py::test_bad_headers[c-parser-pyloop-\xffoo: bar] PASSED -tests/test_http_parser.py::test_unpaired_surrogate_in_header_py[pyloop] PASSED -tests/test_http_parser.py::test_content_length_transfer_encoding[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_content_length_transfer_encoding[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_bad_chunked_py[pyloop] PASSED -tests/test_http_parser.py::test_bad_chunked_c[pyloop] PASSED -tests/test_http_parser.py::test_whitespace_before_header[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_whitespace_before_header[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_headers_longline[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_headers_longline[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_unusual_request_line[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_unusual_request_line[c-parser-pyloop] XFAIL -tests/test_http_parser.py::test_parse[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_body[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_body[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_body_with_CRLF[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_body_with_CRLF[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_delayed[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_delayed[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_headers_multi_feed[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_headers_multi_feed[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_headers_split_field[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_headers_split_field[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_headers_multi[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_headers_multi[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_conn_default_1_0[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_conn_default_1_0[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_conn_default_1_1[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_conn_default_1_1[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_conn_close[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Bar: abc\ndef] PASSED +tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Baz: abc\x00def] PASSED +tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Content-Length: +256] PASSED +tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Content-Length: -5] PASSED +tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Content-Length: \U0001d7d9] PASSED +tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Content-Length: \xb9] PASSED +tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Foo : bar] PASSED +tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Foo: abc\rdef] PASSED +tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-Foo\t: bar] PASSED +tests/test_http_parser.py::test_bad_headers[py-parser-pyloop-\xffoo: bar] PASSED +tests/test_http_parser.py::test_bad_upgrade[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_bad_upgrade[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_c_parser_loaded PASSED +tests/test_http_parser.py::test_compression_brotli[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_compression_brotli[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_compression_deflate[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_compression_deflate[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_compression_empty[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_compression_empty[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_compression_gzip[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_compression_gzip[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_compression_unknown[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_compression_unknown[py-parser-pyloop] PASSED tests/test_http_parser.py::test_conn_close[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_conn_close_1_0[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_conn_close[py-parser-pyloop] PASSED tests/test_http_parser.py::test_conn_close_1_0[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_conn_keep_alive_1_0[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_conn_close_1_0[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_conn_default_1_0[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_conn_default_1_0[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_conn_default_1_1[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_conn_default_1_1[py-parser-pyloop] PASSED tests/test_http_parser.py::test_conn_keep_alive_1_0[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_conn_keep_alive_1_1[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_conn_keep_alive_1_0[py-parser-pyloop] PASSED tests/test_http_parser.py::test_conn_keep_alive_1_1[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_conn_other_1_0[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_conn_keep_alive_1_1[py-parser-pyloop] PASSED tests/test_http_parser.py::test_conn_other_1_0[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_conn_other_1_1[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_conn_other_1_0[py-parser-pyloop] PASSED tests/test_http_parser.py::test_conn_other_1_1[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_request_chunked[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_request_chunked[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_request_te_chunked_with_content_length[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_request_te_chunked_with_content_length[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_request_te_chunked123[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_request_te_chunked123[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_request_te_last_chunked[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_request_te_last_chunked[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_request_te_first_chunked[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_request_te_first_chunked[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_conn_upgrade[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_conn_other_1_1[py-parser-pyloop] PASSED tests/test_http_parser.py::test_conn_upgrade[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_bad_upgrade[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_bad_upgrade[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_compression_empty[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_compression_empty[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_compression_deflate[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_compression_deflate[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_compression_gzip[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_compression_gzip[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_compression_brotli[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_compression_brotli[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_compression_unknown[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_compression_unknown[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_url_connect[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_url_connect[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_headers_connect[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_conn_upgrade[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_content_length_transfer_encoding[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_content_length_transfer_encoding[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_cve_2023_37276[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_cve_2023_37276[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_empty_header_name[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_empty_header_name[py-parser-pyloop] PASSED tests/test_http_parser.py::test_headers_connect[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_url_absolute[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_url_absolute[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_headers_old_websocket_key1[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_headers_old_websocket_key1[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_headers_content_length_err_1[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_headers_connect[py-parser-pyloop] PASSED tests/test_http_parser.py::test_headers_content_length_err_1[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_headers_content_length_err_2[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_headers_content_length_err_1[py-parser-pyloop] PASSED tests/test_http_parser.py::test_headers_content_length_err_2[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-empty-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-empty-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-NUL-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-NUL-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-SP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-SP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-SPSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-SPSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-LF-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-LF-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-NBSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-NBSP-with-name] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-TABSP-name-empty] PASSED -tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-TABSP-with-name] PASSED -tests/test_http_parser.py::test_empty_header_name[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_empty_header_name[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_invalid_header[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_invalid_header[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_invalid_name[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_invalid_name[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_max_header_field_size[py-parser-pyloop-40960] PASSED -tests/test_http_parser.py::test_max_header_field_size[py-parser-pyloop-8191] PASSED -tests/test_http_parser.py::test_max_header_field_size[c-parser-pyloop-40960] PASSED -tests/test_http_parser.py::test_max_header_field_size[c-parser-pyloop-8191] PASSED -tests/test_http_parser.py::test_max_header_field_size_under_limit[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_max_header_field_size_under_limit[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_max_header_value_size[py-parser-pyloop-40960] PASSED -tests/test_http_parser.py::test_max_header_value_size[py-parser-pyloop-8191] PASSED -tests/test_http_parser.py::test_max_header_value_size[c-parser-pyloop-40960] PASSED -tests/test_http_parser.py::test_max_header_value_size[c-parser-pyloop-8191] PASSED -tests/test_http_parser.py::test_max_header_value_size_under_limit[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_max_header_value_size_under_limit[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_max_header_value_size_continuation[py-parser-pyloop-40965] PASSED -tests/test_http_parser.py::test_max_header_value_size_continuation[py-parser-pyloop-8191] PASSED -tests/test_http_parser.py::test_max_header_value_size_continuation[c-parser-pyloop-40965] PASSED -tests/test_http_parser.py::test_max_header_value_size_continuation[c-parser-pyloop-8191] PASSED -tests/test_http_parser.py::test_max_header_value_size_continuation_under_limit[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_max_header_value_size_continuation_under_limit[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_bad_status_line[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_headers_content_length_err_2[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_headers_multi_feed[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_headers_multi_feed[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_headers_old_websocket_key1[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_headers_old_websocket_key1[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_headers_split_field[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_headers_split_field[py-parser-pyloop] PASSED tests/test_http_parser.py::test_http_request_bad_status_line[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_bad_status_line_number[py-parser-pyloop-utf8digit] PASSED -tests/test_http_parser.py::test_http_request_bad_status_line_number[py-parser-pyloop-utf8number] PASSED -tests/test_http_parser.py::test_http_request_bad_status_line_number[py-parser-pyloop-latin1number] PASSED +tests/test_http_parser.py::test_http_request_bad_status_line[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_bad_status_line_number[c-parser-pyloop-latin1number] PASSED tests/test_http_parser.py::test_http_request_bad_status_line_number[c-parser-pyloop-utf8digit] PASSED tests/test_http_parser.py::test_http_request_bad_status_line_number[c-parser-pyloop-utf8number] PASSED -tests/test_http_parser.py::test_http_request_bad_status_line_number[c-parser-pyloop-latin1number] PASSED -tests/test_http_parser.py::test_http_request_bad_status_line_separator[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_bad_status_line_number[py-parser-pyloop-latin1number] PASSED +tests/test_http_parser.py::test_http_request_bad_status_line_number[py-parser-pyloop-utf8digit] PASSED +tests/test_http_parser.py::test_http_request_bad_status_line_number[py-parser-pyloop-utf8number] PASSED tests/test_http_parser.py::test_http_request_bad_status_line_separator[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_bad_status_line_whitespace[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_bad_status_line_separator[py-parser-pyloop] PASSED tests/test_http_parser.py::test_http_request_bad_status_line_whitespace[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_message_after_close[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_bad_status_line_whitespace[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_chunked_payload[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_chunked_payload[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_chunked_payload_and_next_message[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_chunked_payload_and_next_message[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_chunked_payload_chunks[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_chunked_payload_chunks[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_max_status_line[c-parser-pyloop-40965] PASSED +tests/test_http_parser.py::test_http_request_max_status_line[c-parser-pyloop-8191] PASSED +tests/test_http_parser.py::test_http_request_max_status_line[py-parser-pyloop-40965] PASSED +tests/test_http_parser.py::test_http_request_max_status_line[py-parser-pyloop-8191] PASSED +tests/test_http_parser.py::test_http_request_max_status_line_under_limit[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_max_status_line_under_limit[py-parser-pyloop] PASSED tests/test_http_parser.py::test_http_request_message_after_close[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_upgrade[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_upgrade[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_upgrade_unknown[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_upgrade_unknown[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_utf8_request_line[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_utf8_request_line[c-parser-pyloop] XFAIL -tests/test_http_parser.py::test_http_request_parser_utf8[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_utf8[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_non_utf8[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_non_utf8[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_two_slashes[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_two_slashes[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-"] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-(] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-)] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-,] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-/] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-:] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-;] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-<] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-=] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop->] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-?] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-@] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-[] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-\] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-]] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-{] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-}] PASSED +tests/test_http_parser.py::test_http_request_message_after_close[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_ascii_uri[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_ascii_uri[py-parser-pyloop] PASSED tests/test_http_parser.py::test_http_request_parser_bad_method[c-parser-pyloop-"] PASSED tests/test_http_parser.py::test_http_request_parser_bad_method[c-parser-pyloop-(] PASSED tests/test_http_parser.py::test_http_request_parser_bad_method[c-parser-pyloop-)] PASSED @@ -1505,397 +1286,650 @@ tests/test_http_parser.py::test_http_request_parser_bad_method[c-parser-pyloop-\ tests/test_http_parser.py::test_http_request_parser_bad_method[c-parser-pyloop-]] PASSED tests/test_http_parser.py::test_http_request_parser_bad_method[c-parser-pyloop-{] PASSED tests/test_http_parser.py::test_http_request_parser_bad_method[c-parser-pyloop-}] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_version[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-"] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-(] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-)] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-,] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-/] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-:] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-;] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-<] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-=] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop->] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-?] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-@] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-[] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-\] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-]] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-{] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_method[py-parser-pyloop-}] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_nonascii_uri[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_nonascii_uri[py-parser-pyloop] PASSED tests/test_http_parser.py::test_http_request_parser_bad_version[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_version_number[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_version[py-parser-pyloop] PASSED tests/test_http_parser.py::test_http_request_parser_bad_version_number[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_ascii_uri[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_ascii_uri[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_nonascii_uri[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_parser_bad_nonascii_uri[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_max_status_line[py-parser-pyloop-40965] PASSED -tests/test_http_parser.py::test_http_request_max_status_line[py-parser-pyloop-8191] PASSED -tests/test_http_parser.py::test_http_request_max_status_line[c-parser-pyloop-40965] PASSED -tests/test_http_parser.py::test_http_request_max_status_line[c-parser-pyloop-8191] PASSED -tests/test_http_parser.py::test_http_request_max_status_line_under_limit[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_max_status_line_under_limit[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_utf8[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_utf8[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_utf8_without_reason[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_utf8_without_reason[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_obs_line_folding[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_obs_line_folding[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_bad_status_line_too_long[py-parser-pyloop-40962] PASSED -tests/test_http_parser.py::test_http_response_parser_bad_status_line_too_long[py-parser-pyloop-8191] PASSED +tests/test_http_parser.py::test_http_request_parser_bad_version_number[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_non_utf8[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_non_utf8[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_two_slashes[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_two_slashes[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_utf8[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_utf8[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_parser_utf8_request_line[c-parser-pyloop] XFAIL +tests/test_http_parser.py::test_http_request_parser_utf8_request_line[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_upgrade[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_upgrade[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_upgrade_unknown[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_request_upgrade_unknown[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_bad[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_bad[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_bad_chunked_lax[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_bad_chunked_lax[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_bad_crlf[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_bad_crlf[py-parser-pyloop] PASSED tests/test_http_parser.py::test_http_response_parser_bad_status_line_too_long[c-parser-pyloop-40962] PASSED tests/test_http_parser.py::test_http_response_parser_bad_status_line_too_long[c-parser-pyloop-8191] PASSED -tests/test_http_parser.py::test_http_response_parser_status_line_under_limit[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_status_line_under_limit[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_bad_version[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_bad_status_line_too_long[py-parser-pyloop-40962] PASSED +tests/test_http_parser.py::test_http_response_parser_bad_status_line_too_long[py-parser-pyloop-8191] PASSED tests/test_http_parser.py::test_http_response_parser_bad_version[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_bad_version_number[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_bad_version[py-parser-pyloop] PASSED tests/test_http_parser.py::test_http_response_parser_bad_version_number[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_no_reason[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_no_reason[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_lenient_headers[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_lenient_headers[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_bad_crlf[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_bad_crlf[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_bad_chunked_lax[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_bad_chunked_lax[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_notchunked[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_notchunked[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_last_chunked[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_last_chunked[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_bad[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_bad[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_code_under_100[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_code_under_100[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_code_above_999[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_bad_version_number[py-parser-pyloop] PASSED tests/test_http_parser.py::test_http_response_parser_code_above_999[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_code_not_int[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_code_not_int[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_response_parser_code_not_ascii[py-parser-pyloop-utf8digit] PASSED -tests/test_http_parser.py::test_http_response_parser_code_not_ascii[py-parser-pyloop-utf8number] PASSED -tests/test_http_parser.py::test_http_response_parser_code_not_ascii[py-parser-pyloop-latin1number] PASSED +tests/test_http_parser.py::test_http_response_parser_code_above_999[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_code_not_ascii[c-parser-pyloop-latin1number] PASSED tests/test_http_parser.py::test_http_response_parser_code_not_ascii[c-parser-pyloop-utf8digit] PASSED tests/test_http_parser.py::test_http_response_parser_code_not_ascii[c-parser-pyloop-utf8number] PASSED -tests/test_http_parser.py::test_http_response_parser_code_not_ascii[c-parser-pyloop-latin1number] PASSED -tests/test_http_parser.py::test_http_request_chunked_payload[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_chunked_payload[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_chunked_payload_and_next_message[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_chunked_payload_and_next_message[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_chunked_payload_chunks[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_http_request_chunked_payload_chunks[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_chunked_payload_chunk_extension[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_code_not_ascii[py-parser-pyloop-latin1number] PASSED +tests/test_http_parser.py::test_http_response_parser_code_not_ascii[py-parser-pyloop-utf8digit] PASSED +tests/test_http_parser.py::test_http_response_parser_code_not_ascii[py-parser-pyloop-utf8number] PASSED +tests/test_http_parser.py::test_http_response_parser_code_not_int[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_code_not_int[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_code_under_100[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_code_under_100[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_last_chunked[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_last_chunked[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_lenient_headers[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_lenient_headers[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_no_reason[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_no_reason[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_notchunked[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_notchunked[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_obs_line_folding[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_obs_line_folding[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_status_line_under_limit[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_status_line_under_limit[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_utf8[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_utf8[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_utf8_without_reason[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_http_response_parser_utf8_without_reason[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_invalid_character[pyloop] PASSED +tests/test_http_parser.py::test_invalid_header[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_invalid_header[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-LF-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NBSP-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-NUL-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SP-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-SPSP-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-TABSP-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[c-parser-pyloop-pre-empty-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-LF-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NBSP-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-NUL-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SP-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-SPSP-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-TABSP-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-LF-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-LF-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-NBSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-NBSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-NUL-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-NUL-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-SP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-SP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-SPSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-SPSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-TABSP-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-TABSP-with-name] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-empty-name-empty] PASSED +tests/test_http_parser.py::test_invalid_header_spacing[py-parser-pyloop-pre-empty-post-empty-with-name] PASSED +tests/test_http_parser.py::test_invalid_linebreak[pyloop] PASSED +tests/test_http_parser.py::test_invalid_name[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_invalid_name[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_max_header_field_size[c-parser-pyloop-40960] PASSED +tests/test_http_parser.py::test_max_header_field_size[c-parser-pyloop-8191] PASSED +tests/test_http_parser.py::test_max_header_field_size[py-parser-pyloop-40960] PASSED +tests/test_http_parser.py::test_max_header_field_size[py-parser-pyloop-8191] PASSED +tests/test_http_parser.py::test_max_header_field_size_under_limit[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_max_header_field_size_under_limit[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_max_header_value_size[c-parser-pyloop-40960] PASSED +tests/test_http_parser.py::test_max_header_value_size[c-parser-pyloop-8191] PASSED +tests/test_http_parser.py::test_max_header_value_size[py-parser-pyloop-40960] PASSED +tests/test_http_parser.py::test_max_header_value_size[py-parser-pyloop-8191] PASSED +tests/test_http_parser.py::test_max_header_value_size_continuation[c-parser-pyloop-40965] PASSED +tests/test_http_parser.py::test_max_header_value_size_continuation[c-parser-pyloop-8191] PASSED +tests/test_http_parser.py::test_max_header_value_size_continuation[py-parser-pyloop-40965] PASSED +tests/test_http_parser.py::test_max_header_value_size_continuation[py-parser-pyloop-8191] PASSED +tests/test_http_parser.py::test_max_header_value_size_continuation_under_limit[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_max_header_value_size_continuation_under_limit[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_max_header_value_size_under_limit[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_max_header_value_size_under_limit[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_bad_method_for_c_parser_raises[pyloop] PASSED +tests/test_http_parser.py::test_parse_body[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_body[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_body_with_CRLF[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_body_with_CRLF[py-parser-pyloop] PASSED tests/test_http_parser.py::test_parse_chunked_payload_chunk_extension[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_no_length_or_te_on_post[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_no_length_or_te_on_post[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_payload_response_without_body[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_payload_response_without_body[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_length_payload[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_chunk_extension[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[c-parser-pyloop-101] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[c-parser-pyloop-102] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[c-parser-pyloop-204] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[c-parser-pyloop-304] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[py-parser-pyloop-101] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[py-parser-pyloop-102] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[py-parser-pyloop-204] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[py-parser-pyloop-304] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_split_chunks[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_split_chunks[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_with_lf_in_extensions_c_parser[pyloop] PASSED +tests/test_http_parser.py::test_parse_chunked_payload_with_lf_in_extensions_py_parser[pyloop] PASSED +tests/test_http_parser.py::test_parse_content_length_payload_multiple[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_content_length_payload_multiple[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_content_length_than_chunked_payload[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_content_length_than_chunked_payload[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_delayed[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_delayed[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_headers[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_headers[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_headers_longline[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_headers_longline[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_headers_multi[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_headers_multi[py-parser-pyloop] PASSED tests/test_http_parser.py::test_parse_length_payload[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_no_length_payload[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_length_payload[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_no_length_or_te_on_post[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_no_length_or_te_on_post[py-parser-pyloop] PASSED tests/test_http_parser.py::test_parse_no_length_payload[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_content_length_payload_multiple[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_content_length_payload_multiple[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_content_length_than_chunked_payload[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_content_length_than_chunked_payload[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[py-parser-pyloop-204] PASSED -tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[py-parser-pyloop-304] PASSED -tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[py-parser-pyloop-101] PASSED -tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[py-parser-pyloop-102] PASSED -tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[c-parser-pyloop-204] PASSED -tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[c-parser-pyloop-304] PASSED -tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[c-parser-pyloop-101] PASSED -tests/test_http_parser.py::test_parse_chunked_payload_empty_body_than_another_chunked[c-parser-pyloop-102] PASSED -tests/test_http_parser.py::test_parse_chunked_payload_split_chunks[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_chunked_payload_split_chunks[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_partial_url[py-parser-pyloop] PASSED -tests/test_http_parser.py::test_partial_url[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path%23frag-/path#frag-query0-] PASSED -tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path%2523frag-/path%23frag-query1-] PASSED -tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path?key=value%23frag-/path-query2-] PASSED -tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path?key=value%2523frag-/path-query3-] PASSED -tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path#frag%20-/path-query4-frag ] PASSED -tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path#frag%2520-/path-query5-frag%20] PASSED +tests/test_http_parser.py::test_parse_no_length_payload[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_payload_response_without_body[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_payload_response_without_body[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_unusual_request_line[c-parser-pyloop] XFAIL +tests/test_http_parser.py::test_parse_unusual_request_line[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_uri_percent_encoded[c-parser-pyloop-/path#frag%20-/path-query4-frag ] PASSED +tests/test_http_parser.py::test_parse_uri_percent_encoded[c-parser-pyloop-/path#frag%2520-/path-query5-frag%20] PASSED tests/test_http_parser.py::test_parse_uri_percent_encoded[c-parser-pyloop-/path%23frag-/path#frag-query0-] PASSED tests/test_http_parser.py::test_parse_uri_percent_encoded[c-parser-pyloop-/path%2523frag-/path%23frag-query1-] PASSED tests/test_http_parser.py::test_parse_uri_percent_encoded[c-parser-pyloop-/path?key=value%23frag-/path-query2-] PASSED tests/test_http_parser.py::test_parse_uri_percent_encoded[c-parser-pyloop-/path?key=value%2523frag-/path-query3-] PASSED -tests/test_http_parser.py::test_parse_uri_percent_encoded[c-parser-pyloop-/path#frag%20-/path-query4-frag ] PASSED -tests/test_http_parser.py::test_parse_uri_percent_encoded[c-parser-pyloop-/path#frag%2520-/path-query5-frag%20] PASSED -tests/test_http_parser.py::test_parse_uri_utf8[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path#frag%20-/path-query4-frag ] PASSED +tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path#frag%2520-/path-query5-frag%20] PASSED +tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path%23frag-/path#frag-query0-] PASSED +tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path%2523frag-/path%23frag-query1-] PASSED +tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path?key=value%23frag-/path-query2-] PASSED +tests/test_http_parser.py::test_parse_uri_percent_encoded[py-parser-pyloop-/path?key=value%2523frag-/path-query3-] PASSED tests/test_http_parser.py::test_parse_uri_utf8[c-parser-pyloop] XFAIL -tests/test_http_parser.py::test_parse_uri_utf8_percent_encoded[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_parse_uri_utf8[py-parser-pyloop] PASSED tests/test_http_parser.py::test_parse_uri_utf8_percent_encoded[c-parser-pyloop] PASSED -tests/test_http_parser.py::test_parse_bad_method_for_c_parser_raises[pyloop] PASSED -tests/test_http_parser.py::TestParsePayload::test_parse_eof_payload PASSED -tests/test_http_parser.py::TestParsePayload::test_parse_length_payload_eof PASSED -tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_size_error PASSED -tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end PASSED -tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end2 PASSED -tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end_trailers PASSED -tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end_trailers2 PASSED -tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end_trailers3 PASSED -tests/test_http_parser.py::TestParsePayload::test_parse_chunked_payload_split_end_trailers4 PASSED -tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_length PASSED -tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_deflate PASSED -tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_deflate_no_hdrs PASSED -tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_deflate_light PASSED -tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_deflate_split PASSED -tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_deflate_split_err PASSED -tests/test_http_parser.py::TestParsePayload::test_http_payload_parser_length_zero PASSED -tests/test_http_parser.py::TestParsePayload::test_http_payload_brotli PASSED -tests/test_http_parser.py::TestDeflateBuffer::test_feed_data PASSED -tests/test_http_parser.py::TestDeflateBuffer::test_feed_data_err PASSED -tests/test_http_parser.py::TestDeflateBuffer::test_feed_eof PASSED -tests/test_http_parser.py::TestDeflateBuffer::test_feed_eof_err_deflate PASSED -tests/test_http_parser.py::TestDeflateBuffer::test_feed_eof_no_err_gzip PASSED -tests/test_http_parser.py::TestDeflateBuffer::test_feed_eof_no_err_brotli PASSED -tests/test_http_parser.py::TestDeflateBuffer::test_empty_body PASSED +tests/test_http_parser.py::test_parse_uri_utf8_percent_encoded[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_partial_url[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_partial_url[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_reject_obsolete_line_folding[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_reject_obsolete_line_folding[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_request_chunked[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_request_chunked[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_request_te_chunked123[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_request_te_chunked123[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_request_te_chunked_with_content_length[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_request_te_chunked_with_content_length[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_request_te_first_chunked[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_request_te_first_chunked[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_request_te_last_chunked[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_request_te_last_chunked[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_unpaired_surrogate_in_header_py[pyloop] PASSED +tests/test_http_parser.py::test_url_absolute[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_url_absolute[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_url_connect[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_url_connect[py-parser-pyloop] PASSED +tests/test_http_parser.py::test_whitespace_before_header[c-parser-pyloop] PASSED +tests/test_http_parser.py::test_whitespace_before_header[py-parser-pyloop] PASSED +tests/test_http_writer.py::test_drain[pyloop] PASSED +tests/test_http_writer.py::test_drain_no_transport[pyloop] PASSED tests/test_http_writer.py::test_payloadwriter_properties[pyloop] PASSED -tests/test_http_writer.py::test_write_payload_eof[pyloop] PASSED +tests/test_http_writer.py::test_set_eof_after_write_headers[pyloop] PASSED +tests/test_http_writer.py::test_write_calls_callback[pyloop] PASSED +tests/test_http_writer.py::test_write_drain[pyloop] PASSED +tests/test_http_writer.py::test_write_eof_calls_callback[pyloop] PASSED +tests/test_http_writer.py::test_write_headers_prevents_injection[pyloop] PASSED +tests/test_http_writer.py::test_write_large_payload_deflate_compression_chunked_data_in_eof[pyloop] PASSED +tests/test_http_writer.py::test_write_large_payload_deflate_compression_data_in_eof[pyloop] PASSED +tests/test_http_writer.py::test_write_payload_2d_shape_memoryview[pyloop] PASSED +tests/test_http_writer.py::test_write_payload_bytes_memoryview[pyloop] PASSED tests/test_http_writer.py::test_write_payload_chunked[pyloop] PASSED -tests/test_http_writer.py::test_write_payload_chunked_multiple[pyloop] PASSED -tests/test_http_writer.py::test_write_payload_length[pyloop] PASSED tests/test_http_writer.py::test_write_payload_chunked_filter[pyloop] PASSED -tests/test_http_writer.py::test_write_payload_chunked_filter_mutiple_chunks[pyloop] PASSED -tests/test_http_writer.py::test_write_payload_deflate_compression[pyloop] PASSED +tests/test_http_writer.py::test_write_payload_chunked_filter_multiple_chunks[pyloop] PASSED +tests/test_http_writer.py::test_write_payload_chunked_multiple[pyloop] PASSED tests/test_http_writer.py::test_write_payload_deflate_and_chunked[pyloop] PASSED -tests/test_http_writer.py::test_write_payload_bytes_memoryview[pyloop] PASSED +tests/test_http_writer.py::test_write_payload_deflate_compression[pyloop] PASSED +tests/test_http_writer.py::test_write_payload_deflate_compression_chunked[pyloop] PASSED +tests/test_http_writer.py::test_write_payload_deflate_compression_chunked_connection_lost[pyloop] PASSED +tests/test_http_writer.py::test_write_payload_deflate_compression_chunked_data_in_eof[pyloop] PASSED +tests/test_http_writer.py::test_write_payload_eof[pyloop] PASSED +tests/test_http_writer.py::test_write_payload_length[pyloop] PASSED tests/test_http_writer.py::test_write_payload_short_ints_memoryview[pyloop] PASSED -tests/test_http_writer.py::test_write_payload_2d_shape_memoryview[pyloop] PASSED tests/test_http_writer.py::test_write_payload_slicing_long_memoryview[pyloop] PASSED -tests/test_http_writer.py::test_write_drain[pyloop] PASSED -tests/test_http_writer.py::test_write_calls_callback[pyloop] PASSED -tests/test_http_writer.py::test_write_eof_calls_callback[pyloop] PASSED -tests/test_http_writer.py::test_write_to_closing_transport[pyloop] PASSED tests/test_http_writer.py::test_write_to_closed_transport[pyloop] PASSED -tests/test_http_writer.py::test_drain[pyloop] PASSED -tests/test_http_writer.py::test_drain_no_transport[pyloop] PASSED -tests/test_http_writer.py::test_write_headers_prevents_injection[pyloop] PASSED +tests/test_http_writer.py::test_write_to_closing_transport[pyloop] PASSED tests/test_imports.py::test___all__ PASSED tests/test_imports.py::test_web___all__ PASSED -tests/test_imports.py::test_import_time SKIPPED (Timing is more reliable -on Linux) -tests/test_loop.py::test_subprocess_co[pyloop] PASSED tests/test_loop.py::TestCase::test_default_loop PASSED tests/test_loop.py::TestCase::test_on_startup_hook PASSED tests/test_loop.py::test_default_loop[pyloop] PASSED tests/test_loop.py::test_setup_loop_non_main_thread PASSED +tests/test_loop.py::test_subprocess_co[pyloop] PASSED +tests/test_multipart.py::TestMultipartReader::test_bad_boundary PASSED +tests/test_multipart.py::TestMultipartReader::test_dispatch PASSED +tests/test_multipart.py::TestMultipartReader::test_dispatch_bodypart PASSED +tests/test_multipart.py::TestMultipartReader::test_dispatch_custom_multipart_reader PASSED +tests/test_multipart.py::TestMultipartReader::test_dispatch_multipart PASSED +tests/test_multipart.py::TestMultipartReader::test_emit_next PASSED +tests/test_multipart.py::TestMultipartReader::test_from_response PASSED +tests/test_multipart.py::TestMultipartReader::test_invalid_boundary PASSED +tests/test_multipart.py::TestMultipartReader::test_read_boundary_across_chunks SKIPPED +tests/test_multipart.py::TestMultipartReader::test_read_chunk_by_length_doesnt_breaks_reader PASSED +tests/test_multipart.py::TestMultipartReader::test_read_chunk_from_stream_doesnt_breaks_reader PASSED +tests/test_multipart.py::TestMultipartReader::test_read_form_default_encoding PASSED +tests/test_multipart.py::TestMultipartReader::test_read_form_invalid_default_encoding PASSED +tests/test_multipart.py::TestMultipartReader::test_reading_skips_prelude PASSED +tests/test_multipart.py::TestMultipartReader::test_release PASSED +tests/test_multipart.py::TestMultipartReader::test_release_next PASSED +tests/test_multipart.py::TestMultipartReader::test_release_release PASSED +tests/test_multipart.py::TestMultipartReader::test_release_without_read_the_last_object PASSED +tests/test_multipart.py::TestMultipartReader::test_second_next_releases_previous_object PASSED tests/test_multipart.py::TestMultipartResponseWrapper::test_at_eof PASSED tests/test_multipart.py::TestMultipartResponseWrapper::test_next PASSED tests/test_multipart.py::TestMultipartResponseWrapper::test_release PASSED tests/test_multipart.py::TestMultipartResponseWrapper::test_release_when_stream_at_eof PASSED +tests/test_multipart.py::TestMultipartWriter::test_append PASSED +tests/test_multipart.py::TestMultipartWriter::test_append_float_not_allowed PASSED +tests/test_multipart.py::TestMultipartWriter::test_append_form PASSED +tests/test_multipart.py::TestMultipartWriter::test_append_int_not_allowed PASSED +tests/test_multipart.py::TestMultipartWriter::test_append_json PASSED +tests/test_multipart.py::TestMultipartWriter::test_append_json_overrides_content_type PASSED +tests/test_multipart.py::TestMultipartWriter::test_append_multipart PASSED +tests/test_multipart.py::TestMultipartWriter::test_append_none_not_allowed PASSED +tests/test_multipart.py::TestMultipartWriter::test_append_part PASSED +tests/test_multipart.py::TestMultipartWriter::test_append_with_headers PASSED +tests/test_multipart.py::TestMultipartWriter::test_automatic_content_disposition PASSED +tests/test_multipart.py::TestMultipartWriter::test_bad_boundary PASSED +tests/test_multipart.py::TestMultipartWriter::test_default_headers PASSED +tests/test_multipart.py::TestMultipartWriter::test_default_subtype PASSED +tests/test_multipart.py::TestMultipartWriter::test_iter_parts PASSED +tests/test_multipart.py::TestMultipartWriter::test_preserve_content_disposition_header PASSED +tests/test_multipart.py::TestMultipartWriter::test_quoted_boundary PASSED +tests/test_multipart.py::TestMultipartWriter::test_reset_content_disposition_header PASSED +tests/test_multipart.py::TestMultipartWriter::test_set_content_disposition_after_append PASSED +tests/test_multipart.py::TestMultipartWriter::test_set_content_disposition_override PASSED +tests/test_multipart.py::TestMultipartWriter::test_unquoted_boundary PASSED +tests/test_multipart.py::TestMultipartWriter::test_with PASSED +tests/test_multipart.py::TestMultipartWriter::test_write_preserves_content_disposition PASSED +tests/test_multipart.py::TestPartReader::test_decode_with_content_transfer_encoding_base64 PASSED +tests/test_multipart.py::TestPartReader::test_filename PASSED +tests/test_multipart.py::TestPartReader::test_multi_read_chunk PASSED +tests/test_multipart.py::TestPartReader::test_multiread PASSED tests/test_multipart.py::TestPartReader::test_next PASSED tests/test_multipart.py::TestPartReader::test_next_next PASSED tests/test_multipart.py::TestPartReader::test_read PASSED -tests/test_multipart.py::TestPartReader::test_read_chunk_at_eof PASSED -tests/test_multipart.py::TestPartReader::test_read_chunk_without_content_length PASSED -tests/test_multipart.py::TestPartReader::test_read_incomplete_chunk PASSED tests/test_multipart.py::TestPartReader::test_read_all_at_once PASSED -tests/test_multipart.py::TestPartReader::test_read_incomplete_body_chunked PASSED tests/test_multipart.py::TestPartReader::test_read_boundary_with_incomplete_chunk PASSED -tests/test_multipart.py::TestPartReader::test_multi_read_chunk PASSED +tests/test_multipart.py::TestPartReader::test_read_chunk_at_eof PASSED tests/test_multipart.py::TestPartReader::test_read_chunk_properly_counts_read_bytes PASSED +tests/test_multipart.py::TestPartReader::test_read_chunk_without_content_length PASSED tests/test_multipart.py::TestPartReader::test_read_does_not_read_boundary PASSED -tests/test_multipart.py::TestPartReader::test_multiread PASSED +tests/test_multipart.py::TestPartReader::test_read_form PASSED +tests/test_multipart.py::TestPartReader::test_read_form_encoding PASSED +tests/test_multipart.py::TestPartReader::test_read_form_guess_encoding PASSED +tests/test_multipart.py::TestPartReader::test_read_form_invalid_utf8 PASSED +tests/test_multipart.py::TestPartReader::test_read_form_while_closed PASSED +tests/test_multipart.py::TestPartReader::test_read_incomplete_body_chunked PASSED +tests/test_multipart.py::TestPartReader::test_read_incomplete_chunk PASSED +tests/test_multipart.py::TestPartReader::test_read_json PASSED +tests/test_multipart.py::TestPartReader::test_read_json_compressed PASSED +tests/test_multipart.py::TestPartReader::test_read_json_encoding PASSED +tests/test_multipart.py::TestPartReader::test_read_json_guess_encoding PASSED +tests/test_multipart.py::TestPartReader::test_read_json_while_closed PASSED tests/test_multipart.py::TestPartReader::test_read_multiline PASSED tests/test_multipart.py::TestPartReader::test_read_respects_content_length PASSED -tests/test_multipart.py::TestPartReader::test_read_with_content_encoding_gzip PASSED +tests/test_multipart.py::TestPartReader::test_read_text PASSED +tests/test_multipart.py::TestPartReader::test_read_text_compressed PASSED +tests/test_multipart.py::TestPartReader::test_read_text_default_encoding PASSED +tests/test_multipart.py::TestPartReader::test_read_text_encoding PASSED +tests/test_multipart.py::TestPartReader::test_read_text_guess_encoding PASSED +tests/test_multipart.py::TestPartReader::test_read_text_while_closed PASSED tests/test_multipart.py::TestPartReader::test_read_with_content_encoding_deflate PASSED +tests/test_multipart.py::TestPartReader::test_read_with_content_encoding_gzip PASSED tests/test_multipart.py::TestPartReader::test_read_with_content_encoding_identity PASSED tests/test_multipart.py::TestPartReader::test_read_with_content_encoding_unknown PASSED tests/test_multipart.py::TestPartReader::test_read_with_content_transfer_encoding_base64 PASSED -tests/test_multipart.py::TestPartReader::test_read_with_content_transfer_encoding_quoted_printable PASSED -tests/test_multipart.py::TestPartReader::test_decode_with_content_transfer_encoding_base64 PASSED -tests/test_multipart.py::TestPartReader::test_read_with_content_transfer_encoding_binary[binary] PASSED -tests/test_multipart.py::TestPartReader::test_read_with_content_transfer_encoding_binary[8bit] PASSED tests/test_multipart.py::TestPartReader::test_read_with_content_transfer_encoding_binary[7bit] PASSED +tests/test_multipart.py::TestPartReader::test_read_with_content_transfer_encoding_binary[8bit] PASSED +tests/test_multipart.py::TestPartReader::test_read_with_content_transfer_encoding_binary[binary] PASSED +tests/test_multipart.py::TestPartReader::test_read_with_content_transfer_encoding_quoted_printable PASSED tests/test_multipart.py::TestPartReader::test_read_with_content_transfer_encoding_unknown PASSED -tests/test_multipart.py::TestPartReader::test_read_text PASSED -tests/test_multipart.py::TestPartReader::test_read_text_default_encoding PASSED -tests/test_multipart.py::TestPartReader::test_read_text_encoding PASSED -tests/test_multipart.py::TestPartReader::test_read_text_guess_encoding PASSED -tests/test_multipart.py::TestPartReader::test_read_text_compressed PASSED -tests/test_multipart.py::TestPartReader::test_read_text_while_closed PASSED -tests/test_multipart.py::TestPartReader::test_read_json PASSED -tests/test_multipart.py::TestPartReader::test_read_json_encoding PASSED -tests/test_multipart.py::TestPartReader::test_read_json_guess_encoding PASSED -tests/test_multipart.py::TestPartReader::test_read_json_compressed PASSED -tests/test_multipart.py::TestPartReader::test_read_json_while_closed PASSED -tests/test_multipart.py::TestPartReader::test_read_form PASSED -tests/test_multipart.py::TestPartReader::test_read_form_invalid_utf8 PASSED -tests/test_multipart.py::TestPartReader::test_read_form_encoding PASSED -tests/test_multipart.py::TestPartReader::test_read_form_guess_encoding PASSED -tests/test_multipart.py::TestPartReader::test_read_form_while_closed PASSED +tests/test_multipart.py::TestPartReader::test_reading_long_part PASSED tests/test_multipart.py::TestPartReader::test_readline PASSED tests/test_multipart.py::TestPartReader::test_release PASSED -tests/test_multipart.py::TestPartReader::test_release_respects_content_length PASSED tests/test_multipart.py::TestPartReader::test_release_release PASSED -tests/test_multipart.py::TestPartReader::test_filename PASSED -tests/test_multipart.py::TestPartReader::test_reading_long_part PASSED -tests/test_multipart.py::TestMultipartReader::test_from_response PASSED -tests/test_multipart.py::TestMultipartReader::test_bad_boundary PASSED -tests/test_multipart.py::TestMultipartReader::test_dispatch PASSED -tests/test_multipart.py::TestMultipartReader::test_dispatch_bodypart PASSED -tests/test_multipart.py::TestMultipartReader::test_dispatch_multipart PASSED -tests/test_multipart.py::TestMultipartReader::test_dispatch_custom_multipart_reader PASSED -tests/test_multipart.py::TestMultipartReader::test_emit_next PASSED -tests/test_multipart.py::TestMultipartReader::test_invalid_boundary PASSED -tests/test_multipart.py::TestMultipartReader::test_read_boundary_across_chunks SKIPPED -tests/test_multipart.py::TestMultipartReader::test_release PASSED -tests/test_multipart.py::TestMultipartReader::test_release_release PASSED -tests/test_multipart.py::TestMultipartReader::test_release_next PASSED -tests/test_multipart.py::TestMultipartReader::test_second_next_releases_previous_object PASSED -tests/test_multipart.py::TestMultipartReader::test_release_without_read_the_last_object PASSED -tests/test_multipart.py::TestMultipartReader::test_read_chunk_by_length_doesnt_breaks_reader PASSED -tests/test_multipart.py::TestMultipartReader::test_read_chunk_from_stream_doesnt_breaks_reader PASSED -tests/test_multipart.py::TestMultipartReader::test_reading_skips_prelude PASSED -tests/test_multipart.py::TestMultipartReader::test_read_form_default_encoding PASSED -tests/test_multipart.py::TestMultipartReader::test_read_form_invalid_default_encoding PASSED +tests/test_multipart.py::TestPartReader::test_release_respects_content_length PASSED +tests/test_multipart.py::test_async_for_bodypart PASSED +tests/test_multipart.py::test_async_for_reader PASSED tests/test_multipart.py::test_writer PASSED -tests/test_multipart.py::test_writer_serialize_io_chunk PASSED -tests/test_multipart.py::test_writer_serialize_json PASSED +tests/test_multipart.py::test_writer_content_transfer_encoding_quote_printable PASSED +tests/test_multipart.py::test_writer_content_transfer_encoding_unknown PASSED tests/test_multipart.py::test_writer_serialize_form PASSED tests/test_multipart.py::test_writer_serialize_form_dict PASSED -tests/test_multipart.py::test_writer_write PASSED -tests/test_multipart.py::test_writer_write_no_close_boundary PASSED -tests/test_multipart.py::test_writer_write_no_parts PASSED -tests/test_multipart.py::test_writer_serialize_with_content_encoding_gzip PASSED +tests/test_multipart.py::test_writer_serialize_io_chunk PASSED +tests/test_multipart.py::test_writer_serialize_json PASSED tests/test_multipart.py::test_writer_serialize_with_content_encoding_deflate PASSED +tests/test_multipart.py::test_writer_serialize_with_content_encoding_gzip PASSED tests/test_multipart.py::test_writer_serialize_with_content_encoding_identity PASSED tests/test_multipart.py::test_writer_serialize_with_content_encoding_unknown PASSED tests/test_multipart.py::test_writer_with_content_transfer_encoding_base64 PASSED -tests/test_multipart.py::test_writer_content_transfer_encoding_quote_printable PASSED -tests/test_multipart.py::test_writer_content_transfer_encoding_unknown PASSED -tests/test_multipart.py::TestMultipartWriter::test_default_subtype PASSED -tests/test_multipart.py::TestMultipartWriter::test_unquoted_boundary PASSED -tests/test_multipart.py::TestMultipartWriter::test_quoted_boundary PASSED -tests/test_multipart.py::TestMultipartWriter::test_bad_boundary PASSED -tests/test_multipart.py::TestMultipartWriter::test_default_headers PASSED -tests/test_multipart.py::TestMultipartWriter::test_iter_parts PASSED -tests/test_multipart.py::TestMultipartWriter::test_append PASSED -tests/test_multipart.py::TestMultipartWriter::test_append_with_headers PASSED -tests/test_multipart.py::TestMultipartWriter::test_append_json PASSED -tests/test_multipart.py::TestMultipartWriter::test_append_part PASSED -tests/test_multipart.py::TestMultipartWriter::test_append_json_overrides_content_type PASSED -tests/test_multipart.py::TestMultipartWriter::test_append_form PASSED -tests/test_multipart.py::TestMultipartWriter::test_append_multipart PASSED -tests/test_multipart.py::TestMultipartWriter::test_set_content_disposition_after_append PASSED -tests/test_multipart.py::TestMultipartWriter::test_automatic_content_disposition PASSED -tests/test_multipart.py::TestMultipartWriter::test_with PASSED -tests/test_multipart.py::TestMultipartWriter::test_append_int_not_allowed PASSED -tests/test_multipart.py::TestMultipartWriter::test_append_float_not_allowed PASSED -tests/test_multipart.py::TestMultipartWriter::test_append_none_not_allowed PASSED -tests/test_multipart.py::TestMultipartWriter::test_write_preserves_content_disposition PASSED -tests/test_multipart.py::TestMultipartWriter::test_preserve_content_disposition_header PASSED -tests/test_multipart.py::TestMultipartWriter::test_set_content_disposition_override PASSED -tests/test_multipart.py::TestMultipartWriter::test_reset_content_disposition_header PASSED -tests/test_multipart.py::test_async_for_reader PASSED -tests/test_multipart.py::test_async_for_bodypart PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_parse_empty PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_inlonly PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_inlonlyquoted PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_semicolon PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_inlwithasciifilename PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_inlwithfnattach PASSED +tests/test_multipart.py::test_writer_write PASSED +tests/test_multipart.py::test_writer_write_no_close_boundary PASSED +tests/test_multipart.py::test_writer_write_no_parts PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfnboth PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfnboth3 PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfncont PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfncontenc PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfncontlz PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfncontnc PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfncontqs PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfnconts1 PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attrfc2047quoted PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_filename PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_filename_ext PASSED +tests/test_multipart_helpers.py::TestContentDispositionFilename::test_no_filename PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attabspath PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attabspathwin PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attandinline PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attandinline2 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attbrokenquotedfn PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attbrokenquotedfn2 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attbrokenquotedfn3 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attcdate PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attconfusedparam PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attemptyparam PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnboth PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnboth2 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnboth3 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnbrokentoken PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnbrokentokeniso PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnbrokentokenutf PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncont PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncontenc PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncontlz PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncontnc PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncontord PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncontqs PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnconts1 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmdate PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdelim PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdelim2 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdelim3 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdisposition PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdisposition2 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdisposition3 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdisposition4 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmultinstances PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attnewandfn PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attonly PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attonlyquoted PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attonlyucase PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attreversed PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attrfc2047quoted PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attrfc2047token PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwith2filenames PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilename PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_inlwithasciifilenamepdf PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilename25 PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilename35 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilenamenq PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilenamenqs PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilenamenqws PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilenameucase PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilenamews1 PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifnescapedchar PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifnescapedquote PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithquotedsemicolon SKIPPED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfilenameandextparam PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfilenameandextparamescaped PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilenameucase PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilenamenq PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithtokfncommanq PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilenamenqs PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attemptyparam PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilenamenqws PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfntokensq PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithisofnplain PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithutf8fnplain PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfnrawpctenca PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfnusingpct PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfnrawpctencaq PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithnamepct PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfilenamepctandiso PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfnrawpctenclong PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithasciifilenamews1 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwith2filenames PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnbrokentoken PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnbrokentokeniso PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnbrokentokenutf PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdisposition PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdisposition2 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdisposition3 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdisposition4 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_emptydisposition PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_doublecolon PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attandinline PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attandinline2 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attbrokenquotedfn PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attbrokenquotedfn2 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attbrokenquotedfn3 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmultinstances PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdelim PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdelim2 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmissingdelim3 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attreversed PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attconfusedparam PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attabspath PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attabspathwin PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attcdate PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attmdate PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_dispext PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_dispextbadfn PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithisofn2231iso PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231utf8 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231abspathdisguised PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231dpct PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231iso_bad SKIPPED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231nbadpct1 SKIPPED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231nbadpct2 SKIPPED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231noc PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231utf8comp PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231quot PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231quot2 PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231singleqmissing PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231utf8 PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231utf8_bad SKIPPED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231iso_bad SKIPPED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231utf8comp PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231ws1 PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231ws2 PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231ws3 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231quot PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231quot2 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231singleqmissing PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231nbadpct1 SKIPPED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231nbadpct2 SKIPPED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231dpct PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfn2231abspathdisguised PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncont PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncontqs PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncontenc PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncontlz PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncontnc PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnconts1 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfncontord PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnboth PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnboth2 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attfnboth3 PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attnewandfn PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attrfc2047token PASSED -tests/test_multipart_helpers.py::TestParseContentDisposition::test_attrfc2047quoted PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfnrawpctenca PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfnrawpctencaq PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfnrawpctenclong PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfntokensq PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithfnusingpct PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithisofn2231iso PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithisofnplain PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithnamepct PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithquotedsemicolon SKIPPED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithtokfncommanq PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_attwithutf8fnplain PASSED tests/test_multipart_helpers.py::TestParseContentDisposition::test_bad_continuous_param PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_no_filename PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_filename PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_filename_ext PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfncont PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfncontqs PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfncontenc PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfncontlz PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfncontnc PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfnconts1 PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfnboth PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attfnboth3 PASSED -tests/test_multipart_helpers.py::TestContentDispositionFilename::test_attrfc2047quoted PASSED -tests/test_payload.py::test_register_type PASSED -tests/test_payload.py::test_register_unsupported_order PASSED -tests/test_payload.py::test_payload_ctor PASSED -tests/test_payload.py::test_payload_content_type PASSED -tests/test_payload.py::test_bytes_payload_default_content_type PASSED -tests/test_payload.py::test_bytes_payload_explicit_content_type PASSED -tests/test_payload.py::test_bytes_payload_bad_type PASSED -tests/test_payload.py::test_bytes_payload_memoryview_correct_size PASSED -tests/test_payload.py::test_string_payload PASSED -tests/test_payload.py::test_string_io_payload PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_dispext PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_dispextbadfn PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_doublecolon PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_emptydisposition PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_inlonly PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_inlonlyquoted PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_inlwithasciifilename PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_inlwithasciifilenamepdf PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_inlwithfnattach PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_parse_empty PASSED +tests/test_multipart_helpers.py::TestParseContentDisposition::test_semicolon PASSED tests/test_payload.py::test_async_iterable_payload_default_content_type PASSED tests/test_payload.py::test_async_iterable_payload_explicit_content_type PASSED tests/test_payload.py::test_async_iterable_payload_not_async_iterable PASSED +tests/test_payload.py::test_bytes_payload_bad_type PASSED +tests/test_payload.py::test_bytes_payload_default_content_type PASSED +tests/test_payload.py::test_bytes_payload_explicit_content_type PASSED +tests/test_payload.py::test_bytes_payload_memoryview_correct_size PASSED +tests/test_payload.py::test_payload_content_type PASSED +tests/test_payload.py::test_payload_ctor PASSED +tests/test_payload.py::test_register_type PASSED +tests/test_payload.py::test_register_unsupported_order PASSED tests/test_payload.py::test_stream_reader_long_lines PASSED +tests/test_payload.py::test_string_io_payload PASSED +tests/test_payload.py::test_string_payload PASSED tests/test_proxy.py::TestProxy::test_connect PASSED tests/test_proxy.py::TestProxy::test_https_auth PASSED tests/test_proxy.py::TestProxy::test_https_connect PASSED tests/test_proxy.py::TestProxy::test_https_connect_certificate_error PASSED +tests/test_proxy.py::TestProxy::test_https_connect_fingerprint_mismatch PASSED tests/test_proxy.py::TestProxy::test_https_connect_http_proxy_error PASSED tests/test_proxy.py::TestProxy::test_https_connect_pass_ssl_context PASSED tests/test_proxy.py::TestProxy::test_https_connect_resp_start_error PASSED @@ -1910,577 +1944,609 @@ tests/test_proxy.py::TestProxy::test_proxy_server_hostname_default PASSED tests/test_proxy.py::TestProxy::test_proxy_server_hostname_override PASSED tests/test_proxy.py::TestProxy::test_request_port PASSED tests/test_pytest_plugin.py::test_aiohttp_plugin PASSED -tests/test_pytest_plugin.py::test_warning_checks PASSED tests/test_pytest_plugin.py::test_aiohttp_plugin_async_fixture PASSED tests/test_pytest_plugin.py::test_aiohttp_plugin_async_gen_fixture PASSED -tests/test_resolver.py::test_async_resolver_positive_ipv4_lookup[pyloop] SKIPPED -tests/test_resolver.py::test_async_resolver_positive_link_local_ipv6_lookup[pyloop] SKIPPED +tests/test_pytest_plugin.py::test_warning_checks PASSED +tests/test_resolver.py::test_aio_dns_is_default SKIPPED +tests/test_resolver.py::test_async_resolver_aiodns_not_present[pyloop] PASSED +tests/test_resolver.py::test_async_resolver_error_messages_passed[pyloop] SKIPPED +tests/test_resolver.py::test_async_resolver_error_messages_passed_no_hosts[pyloop] SKIPPED +tests/test_resolver.py::test_async_resolver_ipv6_positive_lookup[pyloop] SKIPPED tests/test_resolver.py::test_async_resolver_multiple_replies[pyloop] SKIPPED -tests/test_resolver.py::test_async_resolver_query_multiple_replies[pyloop] SKIPPED tests/test_resolver.py::test_async_resolver_negative_lookup[pyloop] SKIPPED tests/test_resolver.py::test_async_resolver_no_hosts_in_getaddrinfo[pyloop] SKIPPED -tests/test_resolver.py::test_threaded_resolver_positive_lookup PASSED -tests/test_resolver.py::test_threaded_resolver_positive_ipv6_link_local_lookup PASSED -tests/test_resolver.py::test_threaded_resolver_multiple_replies PASSED -tests/test_resolver.py::test_threaded_negative_lookup PASSED -tests/test_resolver.py::test_threaded_negative_ipv6_lookup PASSED -tests/test_resolver.py::test_threaded_negative_lookup_with_unknown_result PASSED -tests/test_resolver.py::test_close_for_threaded_resolver[pyloop] PASSED -tests/test_resolver.py::test_close_for_async_resolver[pyloop] SKIPPED -tests/test_resolver.py::test_default_loop_for_threaded_resolver[pyloop] PASSED -tests/test_resolver.py::test_async_resolver_ipv6_positive_lookup[pyloop] SKIPPED -tests/test_resolver.py::test_async_resolver_query_ipv6_positive_lookup[pyloop] SKIPPED +tests/test_resolver.py::test_async_resolver_positive_ipv4_lookup[pyloop] SKIPPED +tests/test_resolver.py::test_async_resolver_positive_link_local_ipv6_lookup[pyloop] SKIPPED tests/test_resolver.py::test_async_resolver_query_fallback_error_messages_passed[pyloop] SKIPPED tests/test_resolver.py::test_async_resolver_query_fallback_error_messages_passed_no_hosts[pyloop] SKIPPED -tests/test_resolver.py::test_async_resolver_error_messages_passed[pyloop] SKIPPED -tests/test_resolver.py::test_async_resolver_error_messages_passed_no_hosts[pyloop] SKIPPED -tests/test_resolver.py::test_async_resolver_aiodns_not_present[pyloop] PASSED -tests/test_resolver.py::test_aio_dns_is_default SKIPPED (aiodns >=3.2.0 -required) +tests/test_resolver.py::test_async_resolver_query_ipv6_positive_lookup[pyloop] SKIPPED +tests/test_resolver.py::test_async_resolver_query_multiple_replies[pyloop] SKIPPED +tests/test_resolver.py::test_close_for_async_resolver[pyloop] SKIPPED +tests/test_resolver.py::test_close_for_threaded_resolver[pyloop] PASSED +tests/test_resolver.py::test_default_loop_for_threaded_resolver[pyloop] PASSED +tests/test_resolver.py::test_threaded_negative_ipv6_lookup PASSED +tests/test_resolver.py::test_threaded_negative_lookup PASSED +tests/test_resolver.py::test_threaded_negative_lookup_with_unknown_result PASSED tests/test_resolver.py::test_threaded_resolver_is_default PASSED +tests/test_resolver.py::test_threaded_resolver_multiple_replies PASSED +tests/test_resolver.py::test_threaded_resolver_positive_ipv6_link_local_lookup PASSED +tests/test_resolver.py::test_threaded_resolver_positive_lookup PASSED +tests/test_route_def.py::test_delete PASSED +tests/test_route_def.py::test_delete_deco PASSED tests/test_route_def.py::test_get PASSED +tests/test_route_def.py::test_get_deco PASSED tests/test_route_def.py::test_head PASSED +tests/test_route_def.py::test_head_deco PASSED tests/test_route_def.py::test_options PASSED -tests/test_route_def.py::test_post PASSED -tests/test_route_def.py::test_put PASSED +tests/test_route_def.py::test_options_deco PASSED tests/test_route_def.py::test_patch PASSED -tests/test_route_def.py::test_delete PASSED -tests/test_route_def.py::test_route PASSED -tests/test_route_def.py::test_static PASSED -tests/test_route_def.py::test_head_deco PASSED -tests/test_route_def.py::test_get_deco PASSED +tests/test_route_def.py::test_patch_deco PASSED +tests/test_route_def.py::test_post PASSED tests/test_route_def.py::test_post_deco PASSED +tests/test_route_def.py::test_put PASSED tests/test_route_def.py::test_put_deco PASSED -tests/test_route_def.py::test_patch_deco PASSED -tests/test_route_def.py::test_delete_deco PASSED -tests/test_route_def.py::test_options_deco PASSED -tests/test_route_def.py::test_route_deco PASSED -tests/test_route_def.py::test_routedef_sequence_protocol PASSED tests/test_route_def.py::test_repr_route_def PASSED tests/test_route_def.py::test_repr_route_def_with_extra_info PASSED -tests/test_route_def.py::test_repr_static_def PASSED tests/test_route_def.py::test_repr_route_table_def PASSED -tests/test_run_app.py::test_run_app_http[pyloop] PASSED +tests/test_route_def.py::test_repr_static_def PASSED +tests/test_route_def.py::test_route PASSED +tests/test_route_def.py::test_route_deco PASSED +tests/test_route_def.py::test_routedef_sequence_protocol PASSED +tests/test_route_def.py::test_static PASSED +tests/test_run_app.py::TestShutdown::test_shutdown_close_idle_keepalive PASSED +tests/test_run_app.py::TestShutdown::test_shutdown_close_websockets PASSED +tests/test_run_app.py::TestShutdown::test_shutdown_handler_cancellation_suppressed PASSED +tests/test_run_app.py::TestShutdown::test_shutdown_new_conn_rejected PASSED +tests/test_run_app.py::TestShutdown::test_shutdown_pending_handler_responds PASSED +tests/test_run_app.py::TestShutdown::test_shutdown_timeout_handler PASSED +tests/test_run_app.py::TestShutdown::test_shutdown_timeout_not_reached PASSED +tests/test_run_app.py::TestShutdown::test_shutdown_wait_for_handler PASSED +tests/test_run_app.py::test_run_app_abstract_linux_socket[pyloop] SKIPPED +tests/test_run_app.py::test_run_app_cancels_all_pending_tasks[pyloop] PASSED +tests/test_run_app.py::test_run_app_cancels_done_tasks[pyloop] PASSED +tests/test_run_app.py::test_run_app_cancels_failed_tasks[pyloop] PASSED tests/test_run_app.py::test_run_app_close_loop[pyloop] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Nothing Specified] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Port Only] PASSED +tests/test_run_app.py::test_run_app_context_vars[pyloop] PASSED +tests/test_run_app.py::test_run_app_coro[pyloop] PASSED +tests/test_run_app.py::test_run_app_custom_backlog[pyloop] PASSED +tests/test_run_app.py::test_run_app_custom_backlog_unix[pyloop] PASSED +tests/test_run_app.py::test_run_app_default_logger[pyloop] PASSED +tests/test_run_app.py::test_run_app_default_logger_setup_only_if_unconfigured[pyloop] PASSED +tests/test_run_app.py::test_run_app_default_logger_setup_requires_debug[pyloop] PASSED +tests/test_run_app.py::test_run_app_default_logger_setup_requires_default_logger[pyloop] PASSED +tests/test_run_app.py::test_run_app_http[pyloop] PASSED +tests/test_run_app.py::test_run_app_http_unix_socket[pyloop] PASSED +tests/test_run_app.py::test_run_app_https[pyloop] PASSED +tests/test_run_app.py::test_run_app_https_unix_socket[pyloop] PASSED +tests/test_run_app.py::test_run_app_keepalive_timeout[pyloop] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Hosts, reuse_port] PASSED tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Hosts] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Paths] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Paths, Multiple Hosts, Port] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Paths, Port, reuse_address] PASSED tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Paths, Port] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Paths, Single Host, reuse_address, reuse_port] PASSED tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Paths, Single Host] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Single Path, Single Host] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Paths] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Nothing Specified] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Only socket] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Port Only] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Port, reuse_port] PASSED tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Single Path, Multiple Hosts] PASSED tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Single Path, Port] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Paths, Multiple Hosts, Port] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Only socket] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Socket, port] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Single Path, Single Host] PASSED tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Socket, Host, No port] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-reuse_port] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Socket, port] PASSED tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-reuse_address] PASSED tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-reuse_port, reuse_address] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Port, reuse_port] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Hosts, reuse_port] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Paths, Port, reuse_address] PASSED -tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-Multiple Paths, Single Host, reuse_address, reuse_port] PASSED -tests/test_run_app.py::test_run_app_https[pyloop] PASSED -tests/test_run_app.py::test_run_app_nondefault_host_port[pyloop] PASSED +tests/test_run_app.py::test_run_app_mixed_bindings[pyloop-reuse_port] PASSED tests/test_run_app.py::test_run_app_multiple_hosts[pyloop] PASSED -tests/test_run_app.py::test_run_app_custom_backlog[pyloop] PASSED -tests/test_run_app.py::test_run_app_custom_backlog_unix[pyloop] PASSED -tests/test_run_app.py::test_run_app_http_unix_socket[pyloop] PASSED -tests/test_run_app.py::test_run_app_https_unix_socket[pyloop] PASSED -tests/test_run_app.py::test_run_app_abstract_linux_socket[pyloop] SKIPPED -tests/test_run_app.py::test_run_app_preexisting_inet_socket[pyloop] PASSED +tests/test_run_app.py::test_run_app_multiple_preexisting_sockets[pyloop] PASSED +tests/test_run_app.py::test_run_app_nondefault_host_port[pyloop] PASSED tests/test_run_app.py::test_run_app_preexisting_inet6_socket[pyloop] PASSED +tests/test_run_app.py::test_run_app_preexisting_inet_socket[pyloop] PASSED tests/test_run_app.py::test_run_app_preexisting_unix_socket[pyloop] PASSED -tests/test_run_app.py::test_run_app_multiple_preexisting_sockets[pyloop] PASSED +tests/test_run_app.py::test_run_app_raises_exception[pyloop] PASSED +tests/test_run_app.py::test_run_app_with_sock[pyloop] PASSED tests/test_run_app.py::test_sigint PASSED tests/test_run_app.py::test_sigterm PASSED tests/test_run_app.py::test_startup_cleanup_signals_even_on_failure[pyloop] PASSED -tests/test_run_app.py::test_run_app_coro[pyloop] PASSED -tests/test_run_app.py::test_run_app_default_logger[pyloop] PASSED -tests/test_run_app.py::test_run_app_default_logger_setup_requires_debug[pyloop] PASSED -tests/test_run_app.py::test_run_app_default_logger_setup_requires_default_logger[pyloop] PASSED -tests/test_run_app.py::test_run_app_default_logger_setup_only_if_unconfigured[pyloop] PASSED -tests/test_run_app.py::test_run_app_cancels_all_pending_tasks[pyloop] PASSED -tests/test_run_app.py::test_run_app_cancels_done_tasks[pyloop] PASSED -tests/test_run_app.py::test_run_app_cancels_failed_tasks[pyloop] PASSED -tests/test_run_app.py::test_run_app_keepalive_timeout[pyloop] PASSED -tests/test_run_app.py::test_run_app_context_vars[pyloop] PASSED -tests/test_run_app.py::test_run_app_raises_exception[pyloop] PASSED -tests/test_run_app.py::TestShutdown::test_shutdown_wait_for_handler PASSED -tests/test_run_app.py::TestShutdown::test_shutdown_timeout_handler PASSED -tests/test_run_app.py::TestShutdown::test_shutdown_timeout_not_reached PASSED -tests/test_run_app.py::TestShutdown::test_shutdown_new_conn_rejected PASSED -tests/test_run_app.py::TestShutdown::test_shutdown_pending_handler_responds PASSED -tests/test_run_app.py::TestShutdown::test_shutdown_close_idle_keepalive PASSED -tests/test_run_app.py::TestShutdown::test_shutdown_close_websockets PASSED -tests/test_run_app.py::TestShutdown::test_shutdown_handler_cancellation_suppressed PASSED +tests/test_streams.py::TestDataQueue::test_at_eof[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_exception[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_exception_waiter[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_feed_data[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_feed_eof[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_is_eof[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_read[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_read_cancelled[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_read_eof[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_read_exc[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_read_exception[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_read_exception_on_wait[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_read_exception_with_data[pyloop] PASSED +tests/test_streams.py::TestDataQueue::test_read_until_eof[pyloop] PASSED +tests/test_streams.py::TestStreamReader::test___repr__ PASSED +tests/test_streams.py::TestStreamReader::test___repr__data PASSED +tests/test_streams.py::TestStreamReader::test___repr__eof PASSED +tests/test_streams.py::TestStreamReader::test___repr__exception PASSED +tests/test_streams.py::TestStreamReader::test___repr__nondefault_limit PASSED +tests/test_streams.py::TestStreamReader::test___repr__waiter PASSED +tests/test_streams.py::TestStreamReader::test_at_eof PASSED +tests/test_streams.py::TestStreamReader::test_begin_and_end_chunk_receiving PASSED +tests/test_streams.py::TestStreamReader::test_chunksplits_memory_leak PASSED tests/test_streams.py::TestStreamReader::test_create_waiter PASSED tests/test_streams.py::TestStreamReader::test_ctor_global_loop PASSED -tests/test_streams.py::TestStreamReader::test_at_eof PASSED -tests/test_streams.py::TestStreamReader::test_wait_eof PASSED -tests/test_streams.py::TestStreamReader::test_wait_eof_eof PASSED +tests/test_streams.py::TestStreamReader::test_end_chunk_receiving_without_begin PASSED +tests/test_streams.py::TestStreamReader::test_exception PASSED +tests/test_streams.py::TestStreamReader::test_exception_cancel PASSED +tests/test_streams.py::TestStreamReader::test_exception_waiter PASSED tests/test_streams.py::TestStreamReader::test_feed_empty_data PASSED tests/test_streams.py::TestStreamReader::test_feed_nonempty_data PASSED -tests/test_streams.py::TestStreamReader::test_read_zero PASSED tests/test_streams.py::TestStreamReader::test_read PASSED -tests/test_streams.py::TestStreamReader::test_read_line_breaks PASSED tests/test_streams.py::TestStreamReader::test_read_all PASSED -tests/test_streams.py::TestStreamReader::test_read_up_to PASSED +tests/test_streams.py::TestStreamReader::test_read_empty_chunks PASSED tests/test_streams.py::TestStreamReader::test_read_eof PASSED tests/test_streams.py::TestStreamReader::test_read_eof_infinite PASSED tests/test_streams.py::TestStreamReader::test_read_eof_unread_data_no_warning PASSED -tests/test_streams.py::TestStreamReader::test_read_until_eof PASSED tests/test_streams.py::TestStreamReader::test_read_exception PASSED +tests/test_streams.py::TestStreamReader::test_read_line_breaks PASSED +tests/test_streams.py::TestStreamReader::test_read_nowait PASSED +tests/test_streams.py::TestStreamReader::test_read_nowait_exception PASSED +tests/test_streams.py::TestStreamReader::test_read_nowait_n PASSED +tests/test_streams.py::TestStreamReader::test_read_nowait_waiter PASSED +tests/test_streams.py::TestStreamReader::test_read_until_eof PASSED +tests/test_streams.py::TestStreamReader::test_read_up_to PASSED +tests/test_streams.py::TestStreamReader::test_read_zero PASSED +tests/test_streams.py::TestStreamReader::test_readany_chunk_end_race PASSED +tests/test_streams.py::TestStreamReader::test_readany_empty_eof PASSED +tests/test_streams.py::TestStreamReader::test_readany_eof PASSED +tests/test_streams.py::TestStreamReader::test_readany_exception PASSED +tests/test_streams.py::TestStreamReader::test_readchunk PASSED +tests/test_streams.py::TestStreamReader::test_readchunk_separate_http_chunk_tail PASSED +tests/test_streams.py::TestStreamReader::test_readchunk_wait_eof PASSED +tests/test_streams.py::TestStreamReader::test_readchunk_with_other_read_calls PASSED +tests/test_streams.py::TestStreamReader::test_readchunk_with_unread PASSED +tests/test_streams.py::TestStreamReader::test_readexactly PASSED +tests/test_streams.py::TestStreamReader::test_readexactly_eof PASSED +tests/test_streams.py::TestStreamReader::test_readexactly_exception PASSED +tests/test_streams.py::TestStreamReader::test_readexactly_zero_or_less PASSED tests/test_streams.py::TestStreamReader::test_readline PASSED -tests/test_streams.py::TestStreamReader::test_readline_limit_with_existing_data PASSED +tests/test_streams.py::TestStreamReader::test_readline_empty_eof PASSED +tests/test_streams.py::TestStreamReader::test_readline_eof PASSED +tests/test_streams.py::TestStreamReader::test_readline_exception PASSED tests/test_streams.py::TestStreamReader::test_readline_limit PASSED +tests/test_streams.py::TestStreamReader::test_readline_limit_with_existing_data PASSED tests/test_streams.py::TestStreamReader::test_readline_nolimit_nowait PASSED -tests/test_streams.py::TestStreamReader::test_readline_eof PASSED -tests/test_streams.py::TestStreamReader::test_readline_empty_eof PASSED tests/test_streams.py::TestStreamReader::test_readline_read_byte_count PASSED -tests/test_streams.py::TestStreamReader::test_readline_exception PASSED -tests/test_streams.py::TestStreamReader::test_readuntil[*] PASSED tests/test_streams.py::TestStreamReader::test_readuntil[**] PASSED -tests/test_streams.py::TestStreamReader::test_readuntil_limit_with_existing_data[&] PASSED -tests/test_streams.py::TestStreamReader::test_readuntil_limit_with_existing_data[&&] PASSED -tests/test_streams.py::TestStreamReader::test_readuntil_limit[$] PASSED +tests/test_streams.py::TestStreamReader::test_readuntil[*] PASSED +tests/test_streams.py::TestStreamReader::test_readuntil_empty_eof[@@] PASSED +tests/test_streams.py::TestStreamReader::test_readuntil_empty_eof[@] PASSED +tests/test_streams.py::TestStreamReader::test_readuntil_eof[@@] PASSED +tests/test_streams.py::TestStreamReader::test_readuntil_eof[@] PASSED +tests/test_streams.py::TestStreamReader::test_readuntil_exception[##] PASSED +tests/test_streams.py::TestStreamReader::test_readuntil_exception[#] PASSED tests/test_streams.py::TestStreamReader::test_readuntil_limit[$$] PASSED -tests/test_streams.py::TestStreamReader::test_readuntil_nolimit_nowait[!] PASSED +tests/test_streams.py::TestStreamReader::test_readuntil_limit[$] PASSED +tests/test_streams.py::TestStreamReader::test_readuntil_limit_with_existing_data[&&] PASSED +tests/test_streams.py::TestStreamReader::test_readuntil_limit_with_existing_data[&] PASSED tests/test_streams.py::TestStreamReader::test_readuntil_nolimit_nowait[!!] PASSED -tests/test_streams.py::TestStreamReader::test_readuntil_eof[@] PASSED -tests/test_streams.py::TestStreamReader::test_readuntil_eof[@@] PASSED -tests/test_streams.py::TestStreamReader::test_readuntil_empty_eof[@] PASSED -tests/test_streams.py::TestStreamReader::test_readuntil_empty_eof[@@] PASSED -tests/test_streams.py::TestStreamReader::test_readuntil_read_byte_count[!] PASSED +tests/test_streams.py::TestStreamReader::test_readuntil_nolimit_nowait[!] PASSED tests/test_streams.py::TestStreamReader::test_readuntil_read_byte_count[!!] PASSED -tests/test_streams.py::TestStreamReader::test_readuntil_exception[#] PASSED -tests/test_streams.py::TestStreamReader::test_readuntil_exception[##] PASSED -tests/test_streams.py::TestStreamReader::test_readexactly_zero_or_less PASSED -tests/test_streams.py::TestStreamReader::test_readexactly PASSED -tests/test_streams.py::TestStreamReader::test_readexactly_eof PASSED -tests/test_streams.py::TestStreamReader::test_readexactly_exception PASSED +tests/test_streams.py::TestStreamReader::test_readuntil_read_byte_count[!] PASSED tests/test_streams.py::TestStreamReader::test_unread_data PASSED -tests/test_streams.py::TestStreamReader::test_exception PASSED -tests/test_streams.py::TestStreamReader::test_exception_waiter PASSED -tests/test_streams.py::TestStreamReader::test_exception_cancel PASSED -tests/test_streams.py::TestStreamReader::test_readany_eof PASSED -tests/test_streams.py::TestStreamReader::test_readany_empty_eof PASSED -tests/test_streams.py::TestStreamReader::test_readany_exception PASSED -tests/test_streams.py::TestStreamReader::test_read_nowait PASSED -tests/test_streams.py::TestStreamReader::test_read_nowait_n PASSED -tests/test_streams.py::TestStreamReader::test_read_nowait_exception PASSED -tests/test_streams.py::TestStreamReader::test_read_nowait_waiter PASSED -tests/test_streams.py::TestStreamReader::test_readchunk PASSED -tests/test_streams.py::TestStreamReader::test_readchunk_wait_eof PASSED -tests/test_streams.py::TestStreamReader::test_begin_and_end_chunk_receiving PASSED -tests/test_streams.py::TestStreamReader::test_readany_chunk_end_race PASSED -tests/test_streams.py::TestStreamReader::test_end_chunk_receiving_without_begin PASSED -tests/test_streams.py::TestStreamReader::test_readchunk_with_unread PASSED -tests/test_streams.py::TestStreamReader::test_readchunk_with_other_read_calls PASSED -tests/test_streams.py::TestStreamReader::test_chunksplits_memory_leak PASSED -tests/test_streams.py::TestStreamReader::test_read_empty_chunks PASSED -tests/test_streams.py::TestStreamReader::test_readchunk_separate_http_chunk_tail PASSED -tests/test_streams.py::TestStreamReader::test___repr__ PASSED -tests/test_streams.py::TestStreamReader::test___repr__nondefault_limit PASSED -tests/test_streams.py::TestStreamReader::test___repr__eof PASSED -tests/test_streams.py::TestStreamReader::test___repr__data PASSED -tests/test_streams.py::TestStreamReader::test___repr__exception PASSED -tests/test_streams.py::TestStreamReader::test___repr__waiter PASSED tests/test_streams.py::TestStreamReader::test_unread_empty PASSED +tests/test_streams.py::TestStreamReader::test_wait_eof PASSED +tests/test_streams.py::TestStreamReader::test_wait_eof_eof PASSED +tests/test_streams.py::test_data_queue_empty PASSED +tests/test_streams.py::test_data_queue_items PASSED tests/test_streams.py::test_empty_stream_reader PASSED tests/test_streams.py::test_empty_stream_reader_iter_chunks PASSED -tests/test_streams.py::TestDataQueue::test_is_eof[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_at_eof[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_feed_data[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_feed_eof[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_read[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_read_eof[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_read_cancelled[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_read_until_eof[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_read_exc[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_read_exception[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_read_exception_with_data[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_read_exception_on_wait[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_exception[pyloop] PASSED -tests/test_streams.py::TestDataQueue::test_exception_waiter[pyloop] PASSED -tests/test_streams.py::test_feed_data_waiters PASSED tests/test_streams.py::test_feed_data_completed_waiters PASSED -tests/test_streams.py::test_feed_eof_waiters PASSED +tests/test_streams.py::test_feed_data_waiters PASSED tests/test_streams.py::test_feed_eof_cancelled PASSED +tests/test_streams.py::test_feed_eof_waiters PASSED +tests/test_streams.py::test_isinstance_check PASSED tests/test_streams.py::test_on_eof PASSED -tests/test_streams.py::test_on_eof_empty_reader PASSED -tests/test_streams.py::test_on_eof_exc_in_callback PASSED -tests/test_streams.py::test_on_eof_exc_in_callback_empty_stream_reader PASSED +tests/test_streams.py::test_on_eof_empty_reader PASSED tests/test_streams.py::test_on_eof_eof_is_set PASSED tests/test_streams.py::test_on_eof_eof_is_set_exception PASSED +tests/test_streams.py::test_on_eof_exc_in_callback PASSED +tests/test_streams.py::test_on_eof_exc_in_callback_empty_stream_reader PASSED tests/test_streams.py::test_set_exception PASSED tests/test_streams.py::test_set_exception_cancelled PASSED tests/test_streams.py::test_set_exception_eof_callbacks PASSED -tests/test_streams.py::test_stream_reader_lines PASSED tests/test_streams.py::test_stream_reader_chunks_complete PASSED tests/test_streams.py::test_stream_reader_chunks_incomplete PASSED -tests/test_streams.py::test_data_queue_empty PASSED -tests/test_streams.py::test_data_queue_items PASSED -tests/test_streams.py::test_stream_reader_iter_any PASSED tests/test_streams.py::test_stream_reader_iter PASSED -tests/test_streams.py::test_stream_reader_iter_chunks_no_chunked_encoding PASSED +tests/test_streams.py::test_stream_reader_iter_any PASSED tests/test_streams.py::test_stream_reader_iter_chunks_chunked_encoding PASSED -tests/test_streams.py::test_isinstance_check PASSED -tests/test_tcp_helpers.py::test_tcp_nodelay_exception PASSED +tests/test_streams.py::test_stream_reader_iter_chunks_no_chunked_encoding PASSED +tests/test_streams.py::test_stream_reader_lines PASSED tests/test_tcp_helpers.py::test_tcp_nodelay_enable PASSED tests/test_tcp_helpers.py::test_tcp_nodelay_enable_and_disable PASSED tests/test_tcp_helpers.py::test_tcp_nodelay_enable_ipv6 PASSED -tests/test_tcp_helpers.py::test_tcp_nodelay_enable_unix PASSED tests/test_tcp_helpers.py::test_tcp_nodelay_enable_no_socket PASSED -tests/test_test_utils.py::test_with_test_server_fails PASSED -tests/test_test_utils.py::test_with_client_fails PASSED -tests/test_test_utils.py::test_aiohttp_client_close_is_idempotent PASSED +tests/test_tcp_helpers.py::test_tcp_nodelay_enable_unix PASSED +tests/test_tcp_helpers.py::test_tcp_nodelay_exception PASSED tests/test_test_utils.py::TestAioHTTPTestCase::test_example_with_loop PASSED tests/test_test_utils.py::TestAioHTTPTestCase::test_example_without_explicit_loop PASSED tests/test_test_utils.py::TestAioHTTPTestCase::test_inner_example PASSED tests/test_test_utils.py::TestAioHTTPTestCase::test_inner_example_without_explicit_loop PASSED -tests/test_test_utils.py::test_unittest_run_loop PASSED -tests/test_test_utils.py::test_get_route PASSED -tests/test_test_utils.py::test_client_websocket PASSED +tests/test_test_utils.py::test_aiohttp_client_close_is_idempotent PASSED +tests/test_test_utils.py::test_base_test_server_socket_factory[RawTestServer] PASSED +tests/test_test_utils.py::test_base_test_server_socket_factory[TestServer] PASSED +tests/test_test_utils.py::test_client_context_manager_response[delete] PASSED +tests/test_test_utils.py::test_client_context_manager_response[get] PASSED +tests/test_test_utils.py::test_client_context_manager_response[head] PASSED +tests/test_test_utils.py::test_client_context_manager_response[options] PASSED +tests/test_test_utils.py::test_client_context_manager_response[patch] PASSED +tests/test_test_utils.py::test_client_context_manager_response[post0] PASSED +tests/test_test_utils.py::test_client_context_manager_response[post1] PASSED +tests/test_test_utils.py::test_client_context_manager_response[put] PASSED tests/test_test_utils.py::test_client_cookie PASSED -tests/test_test_utils.py::test_test_client_methods[get] PASSED -tests/test_test_utils.py::test_test_client_methods[post0] PASSED -tests/test_test_utils.py::test_test_client_methods[options] PASSED -tests/test_test_utils.py::test_test_client_methods[post1] PASSED -tests/test_test_utils.py::test_test_client_methods[put] PASSED -tests/test_test_utils.py::test_test_client_methods[patch] PASSED -tests/test_test_utils.py::test_test_client_methods[delete] PASSED -tests/test_test_utils.py::test_test_client_head PASSED +tests/test_test_utils.py::test_client_unsupported_arg PASSED +tests/test_test_utils.py::test_client_websocket PASSED +tests/test_test_utils.py::test_custom_port PASSED +tests/test_test_utils.py::test_disable_retry_persistent_connection PASSED +tests/test_test_utils.py::test_get_route PASSED tests/test_test_utils.py::test_make_mocked_request[headers0] PASSED tests/test_test_utils.py::test_make_mocked_request[headers1] PASSED tests/test_test_utils.py::test_make_mocked_request[headers2] PASSED -tests/test_test_utils.py::test_make_mocked_request_sslcontext PASSED -tests/test_test_utils.py::test_make_mocked_request_unknown_extra_info PASSED tests/test_test_utils.py::test_make_mocked_request_app PASSED -tests/test_test_utils.py::test_make_mocked_request_app_can_store_values PASSED tests/test_test_utils.py::test_make_mocked_request_app_access_non_existing PASSED -tests/test_test_utils.py::test_make_mocked_request_match_info PASSED +tests/test_test_utils.py::test_make_mocked_request_app_can_store_values PASSED tests/test_test_utils.py::test_make_mocked_request_content PASSED tests/test_test_utils.py::test_make_mocked_request_empty_payload PASSED +tests/test_test_utils.py::test_make_mocked_request_match_info PASSED +tests/test_test_utils.py::test_make_mocked_request_sslcontext PASSED tests/test_test_utils.py::test_make_mocked_request_transport PASSED +tests/test_test_utils.py::test_make_mocked_request_unknown_extra_info PASSED +tests/test_test_utils.py::test_server_context_manager PASSED +tests/test_test_utils.py::test_server_make_url_yarl_compatibility PASSED +tests/test_test_utils.py::test_test_client_head PASSED +tests/test_test_utils.py::test_test_client_methods[delete] PASSED +tests/test_test_utils.py::test_test_client_methods[get] PASSED +tests/test_test_utils.py::test_test_client_methods[options] PASSED +tests/test_test_utils.py::test_test_client_methods[patch] PASSED +tests/test_test_utils.py::test_test_client_methods[post0] PASSED +tests/test_test_utils.py::test_test_client_methods[post1] PASSED +tests/test_test_utils.py::test_test_client_methods[put] PASSED tests/test_test_utils.py::test_test_client_props PASSED tests/test_test_utils.py::test_test_client_raw_server_props PASSED tests/test_test_utils.py::test_test_server_context_manager PASSED -tests/test_test_utils.py::test_client_unsupported_arg PASSED -tests/test_test_utils.py::test_server_make_url_yarl_compatibility PASSED -tests/test_test_utils.py::test_testcase_no_app PASSED -tests/test_test_utils.py::test_server_context_manager PASSED -tests/test_test_utils.py::test_client_context_manager_response[head] PASSED -tests/test_test_utils.py::test_client_context_manager_response[get] PASSED -tests/test_test_utils.py::test_client_context_manager_response[post0] PASSED -tests/test_test_utils.py::test_client_context_manager_response[options] PASSED -tests/test_test_utils.py::test_client_context_manager_response[post1] PASSED -tests/test_test_utils.py::test_client_context_manager_response[put] PASSED -tests/test_test_utils.py::test_client_context_manager_response[patch] PASSED -tests/test_test_utils.py::test_client_context_manager_response[delete] PASSED -tests/test_test_utils.py::test_custom_port PASSED -tests/test_test_utils.py::test_base_test_server_socket_factory[TestServer] PASSED -tests/test_test_utils.py::test_base_test_server_socket_factory[RawTestServer] PASSED tests/test_test_utils.py::test_test_server_hostnames[127.0.0.1-127.0.0.1] PASSED -tests/test_test_utils.py::test_test_server_hostnames[localhost-127.0.0.1] PASSED tests/test_test_utils.py::test_test_server_hostnames[::1-::1] PASSED -tests/test_tracing.py::TestTraceConfig::test_trace_config_ctx_default PASSED -tests/test_tracing.py::TestTraceConfig::test_trace_config_ctx_factory PASSED -tests/test_tracing.py::TestTraceConfig::test_trace_config_ctx_request_ctx PASSED -tests/test_tracing.py::TestTraceConfig::test_freeze PASSED -tests/test_tracing.py::TestTrace::test_send[request_start-params0-TraceRequestStartParams] PASSED -tests/test_tracing.py::TestTrace::test_send[request_chunk_sent-params1-TraceRequestChunkSentParams] PASSED -tests/test_tracing.py::TestTrace::test_send[response_chunk_received-params2-TraceResponseChunkReceivedParams] PASSED -tests/test_tracing.py::TestTrace::test_send[request_end-params3-TraceRequestEndParams] PASSED -tests/test_tracing.py::TestTrace::test_send[request_exception-params4-TraceRequestExceptionParams] PASSED -tests/test_tracing.py::TestTrace::test_send[request_redirect-params5-TraceRequestRedirectParams] PASSED -tests/test_tracing.py::TestTrace::test_send[connection_queued_start-params6-TraceConnectionQueuedStartParams] PASSED -tests/test_tracing.py::TestTrace::test_send[connection_queued_end-params7-TraceConnectionQueuedEndParams] PASSED -tests/test_tracing.py::TestTrace::test_send[connection_create_start-params8-TraceConnectionCreateStartParams] PASSED +tests/test_test_utils.py::test_test_server_hostnames[localhost-127.0.0.1] PASSED +tests/test_test_utils.py::test_testcase_no_app PASSED +tests/test_test_utils.py::test_unittest_run_loop PASSED +tests/test_test_utils.py::test_with_client_fails PASSED +tests/test_test_utils.py::test_with_test_server_fails PASSED tests/test_tracing.py::TestTrace::test_send[connection_create_end-params9-TraceConnectionCreateEndParams] PASSED +tests/test_tracing.py::TestTrace::test_send[connection_create_start-params8-TraceConnectionCreateStartParams] PASSED +tests/test_tracing.py::TestTrace::test_send[connection_queued_end-params7-TraceConnectionQueuedEndParams] PASSED +tests/test_tracing.py::TestTrace::test_send[connection_queued_start-params6-TraceConnectionQueuedStartParams] PASSED tests/test_tracing.py::TestTrace::test_send[connection_reuseconn-params10-TraceConnectionReuseconnParams] PASSED -tests/test_tracing.py::TestTrace::test_send[dns_resolvehost_start-params11-TraceDnsResolveHostStartParams] PASSED -tests/test_tracing.py::TestTrace::test_send[dns_resolvehost_end-params12-TraceDnsResolveHostEndParams] PASSED tests/test_tracing.py::TestTrace::test_send[dns_cache_hit-params13-TraceDnsCacheHitParams] PASSED tests/test_tracing.py::TestTrace::test_send[dns_cache_miss-params14-TraceDnsCacheMissParams] PASSED -tests/test_urldispatch.py::test_register_uncommon_http_methods PASSED +tests/test_tracing.py::TestTrace::test_send[dns_resolvehost_end-params12-TraceDnsResolveHostEndParams] PASSED +tests/test_tracing.py::TestTrace::test_send[dns_resolvehost_start-params11-TraceDnsResolveHostStartParams] PASSED +tests/test_tracing.py::TestTrace::test_send[request_chunk_sent-params1-TraceRequestChunkSentParams] PASSED +tests/test_tracing.py::TestTrace::test_send[request_end-params3-TraceRequestEndParams] PASSED +tests/test_tracing.py::TestTrace::test_send[request_exception-params4-TraceRequestExceptionParams] PASSED +tests/test_tracing.py::TestTrace::test_send[request_redirect-params5-TraceRequestRedirectParams] PASSED +tests/test_tracing.py::TestTrace::test_send[request_start-params0-TraceRequestStartParams] PASSED +tests/test_tracing.py::TestTrace::test_send[response_chunk_received-params2-TraceResponseChunkReceivedParams] PASSED +tests/test_tracing.py::TestTraceConfig::test_freeze PASSED +tests/test_tracing.py::TestTraceConfig::test_trace_config_ctx_default PASSED +tests/test_tracing.py::TestTraceConfig::test_trace_config_ctx_factory PASSED +tests/test_tracing.py::TestTraceConfig::test_trace_config_ctx_request_ctx PASSED +tests/test_urldispatch.py::test_404_for_static_resource PASSED +tests/test_urldispatch.py::test_405_for_resource_adapter PASSED +tests/test_urldispatch.py::test_add_domain[pyloop] PASSED +tests/test_urldispatch.py::test_add_domain_not_str[pyloop] PASSED +tests/test_urldispatch.py::test_add_invalid_path PASSED +tests/test_urldispatch.py::test_add_route_invalid_method PASSED +tests/test_urldispatch.py::test_add_route_not_started_with_slash PASSED tests/test_urldispatch.py::test_add_route_root PASSED tests/test_urldispatch.py::test_add_route_simple PASSED -tests/test_urldispatch.py::test_add_with_matchdict PASSED -tests/test_urldispatch.py::test_add_with_matchdict_with_colon PASSED +tests/test_urldispatch.py::test_add_route_with_add_delete_shortcut PASSED tests/test_urldispatch.py::test_add_route_with_add_get_shortcut PASSED +tests/test_urldispatch.py::test_add_route_with_add_head_shortcut PASSED +tests/test_urldispatch.py::test_add_route_with_add_patch_shortcut PASSED tests/test_urldispatch.py::test_add_route_with_add_post_shortcut PASSED tests/test_urldispatch.py::test_add_route_with_add_put_shortcut PASSED -tests/test_urldispatch.py::test_add_route_with_add_patch_shortcut PASSED -tests/test_urldispatch.py::test_add_route_with_add_delete_shortcut PASSED -tests/test_urldispatch.py::test_add_route_with_add_head_shortcut PASSED -tests/test_urldispatch.py::test_add_with_name PASSED -tests/test_urldispatch.py::test_add_with_tailing_slash PASSED -tests/test_urldispatch.py::test_add_invalid_path PASSED -tests/test_urldispatch.py::test_add_url_invalid1 PASSED -tests/test_urldispatch.py::test_add_url_invalid2 PASSED -tests/test_urldispatch.py::test_add_url_invalid3 PASSED -tests/test_urldispatch.py::test_add_url_invalid4 PASSED -tests/test_urldispatch.py::test_add_url_escaping PASSED -tests/test_urldispatch.py::test_any_method PASSED -tests/test_urldispatch.py::test_match_second_result_in_table PASSED -tests/test_urldispatch.py::test_raise_method_not_allowed PASSED -tests/test_urldispatch.py::test_raise_method_not_found PASSED -tests/test_urldispatch.py::test_double_add_url_with_the_same_name PASSED -tests/test_urldispatch.py::test_route_plain PASSED -tests/test_urldispatch.py::test_route_unknown_route_name PASSED -tests/test_urldispatch.py::test_route_dynamic PASSED -tests/test_urldispatch.py::test_add_static_path_checks PASSED -tests/test_urldispatch.py::test_add_static_path_resolution PASSED +tests/test_urldispatch.py::test_add_route_with_invalid_re PASSED +tests/test_urldispatch.py::test_add_route_with_re[{fn:\\w+ \\d+}-abc 123-expected2] PASSED +tests/test_urldispatch.py::test_add_route_with_re[{fn:\\w+\\s\\d+}-abc 123-expected3] PASSED +tests/test_urldispatch.py::test_add_route_with_re[{name}.html-test.html-expected1] PASSED +tests/test_urldispatch.py::test_add_route_with_re[{to:\\d+}-1234-expected0] PASSED +tests/test_urldispatch.py::test_add_route_with_re_and_slashes PASSED +tests/test_urldispatch.py::test_add_route_with_re_including_slashes PASSED +tests/test_urldispatch.py::test_add_route_with_re_not_match PASSED tests/test_urldispatch.py::test_add_static PASSED tests/test_urldispatch.py::test_add_static_append_version PASSED -tests/test_urldispatch.py::test_add_static_append_version_set_from_constructor PASSED -tests/test_urldispatch.py::test_add_static_append_version_override_constructor PASSED tests/test_urldispatch.py::test_add_static_append_version_filename_without_slash PASSED +tests/test_urldispatch.py::test_add_static_append_version_follow_symlink PASSED tests/test_urldispatch.py::test_add_static_append_version_non_exists_file PASSED tests/test_urldispatch.py::test_add_static_append_version_non_exists_file_without_slash PASSED -tests/test_urldispatch.py::test_add_static_append_version_follow_symlink PASSED tests/test_urldispatch.py::test_add_static_append_version_not_follow_symlink PASSED +tests/test_urldispatch.py::test_add_static_append_version_override_constructor PASSED +tests/test_urldispatch.py::test_add_static_append_version_set_from_constructor PASSED +tests/test_urldispatch.py::test_add_static_path_checks PASSED +tests/test_urldispatch.py::test_add_static_path_resolution PASSED tests/test_urldispatch.py::test_add_static_quoting PASSED -tests/test_urldispatch.py::test_plain_not_match PASSED -tests/test_urldispatch.py::test_dynamic_not_match PASSED -tests/test_urldispatch.py::test_static_not_match PASSED -tests/test_urldispatch.py::test_dynamic_with_trailing_slash PASSED -tests/test_urldispatch.py::test_len PASSED -tests/test_urldispatch.py::test_iter PASSED +tests/test_urldispatch.py::test_add_subapp_errors PASSED +tests/test_urldispatch.py::test_add_url_escaping PASSED +tests/test_urldispatch.py::test_add_url_invalid1 PASSED +tests/test_urldispatch.py::test_add_url_invalid2 PASSED +tests/test_urldispatch.py::test_add_url_invalid3 PASSED +tests/test_urldispatch.py::test_add_url_invalid4 PASSED +tests/test_urldispatch.py::test_add_with_matchdict PASSED +tests/test_urldispatch.py::test_add_with_matchdict_with_colon PASSED +tests/test_urldispatch.py::test_add_with_name PASSED +tests/test_urldispatch.py::test_add_with_tailing_slash PASSED +tests/test_urldispatch.py::test_any_method PASSED +tests/test_urldispatch.py::test_cannot_add_subapp_with_empty_prefix PASSED +tests/test_urldispatch.py::test_cannot_add_subapp_with_slash_prefix PASSED +tests/test_urldispatch.py::test_check_allowed_method_for_found_resource PASSED tests/test_urldispatch.py::test_contains PASSED -tests/test_urldispatch.py::test_static_repr PASSED -tests/test_urldispatch.py::test_static_adds_slash PASSED -tests/test_urldispatch.py::test_static_remove_trailing_slash PASSED -tests/test_urldispatch.py::test_add_route_with_re[{to:\\d+}-1234-expected0] PASSED -tests/test_urldispatch.py::test_add_route_with_re[{name}.html-test.html-expected1] PASSED -tests/test_urldispatch.py::test_add_route_with_re[{fn:\\w+ \\d+}-abc 123-expected2] PASSED -tests/test_urldispatch.py::test_add_route_with_re[{fn:\\w+\\s\\d+}-abc 123-expected3] PASSED -tests/test_urldispatch.py::test_add_route_with_re_and_slashes PASSED -tests/test_urldispatch.py::test_add_route_with_re_not_match PASSED -tests/test_urldispatch.py::test_add_route_with_re_including_slashes PASSED -tests/test_urldispatch.py::test_add_route_with_invalid_re PASSED -tests/test_urldispatch.py::test_route_dynamic_with_regex_spec PASSED -tests/test_urldispatch.py::test_route_dynamic_with_regex_spec_and_trailing_slash PASSED -tests/test_urldispatch.py::test_route_dynamic_with_regex PASSED -tests/test_urldispatch.py::test_route_dynamic_quoting PASSED -tests/test_urldispatch.py::test_regular_match_info PASSED -tests/test_urldispatch.py::test_match_info_with_plus PASSED -tests/test_urldispatch.py::test_not_found_repr PASSED -tests/test_urldispatch.py::test_not_allowed_repr PASSED -tests/test_urldispatch.py::test_default_expect_handler PASSED -tests/test_urldispatch.py::test_custom_expect_handler_plain PASSED +tests/test_urldispatch.py::test_convert_empty_path_to_slash_on_freezing PASSED tests/test_urldispatch.py::test_custom_expect_handler_dynamic PASSED -tests/test_urldispatch.py::test_expect_handler_non_coroutine PASSED +tests/test_urldispatch.py::test_custom_expect_handler_plain PASSED +tests/test_urldispatch.py::test_default_expect_handler PASSED +tests/test_urldispatch.py::test_deprecate_bare_generators PASSED +tests/test_urldispatch.py::test_deprecate_non_coroutine PASSED +tests/test_urldispatch.py::test_domain_valid PASSED +tests/test_urldispatch.py::test_domain_validation_error[*.example.com-ValueError] PASSED +tests/test_urldispatch.py::test_domain_validation_error[-ValueError] PASSED +tests/test_urldispatch.py::test_domain_validation_error[None-TypeError] PASSED +tests/test_urldispatch.py::test_domain_validation_error[example$com-ValueError] PASSED +tests/test_urldispatch.py::test_domain_validation_error[http://dom-ValueError] PASSED +tests/test_urldispatch.py::test_double_add_url_with_the_same_name PASSED +tests/test_urldispatch.py::test_dynamic_match_double_quoted_path PASSED tests/test_urldispatch.py::test_dynamic_match_non_ascii PASSED -tests/test_urldispatch.py::test_dynamic_match_with_static_part PASSED tests/test_urldispatch.py::test_dynamic_match_two_part2 PASSED tests/test_urldispatch.py::test_dynamic_match_unquoted_path PASSED -tests/test_urldispatch.py::test_dynamic_match_double_quoted_path PASSED -tests/test_urldispatch.py::test_add_route_not_started_with_slash PASSED -tests/test_urldispatch.py::test_add_route_invalid_method PASSED -tests/test_urldispatch.py::test_routes_view_len PASSED -tests/test_urldispatch.py::test_routes_view_iter PASSED -tests/test_urldispatch.py::test_routes_view_contains PASSED -tests/test_urldispatch.py::test_routes_abc PASSED -tests/test_urldispatch.py::test_named_resources_abc PASSED -tests/test_urldispatch.py::test_named_resources PASSED -tests/test_urldispatch.py::test_resource_iter PASSED -tests/test_urldispatch.py::test_deprecate_bare_generators PASSED -tests/test_urldispatch.py::test_view_route PASSED -tests/test_urldispatch.py::test_resource_route_match PASSED -tests/test_urldispatch.py::test_error_on_double_route_adding PASSED +tests/test_urldispatch.py::test_dynamic_match_with_static_part PASSED +tests/test_urldispatch.py::test_dynamic_not_match PASSED +tests/test_urldispatch.py::test_dynamic_resource_canonical PASSED +tests/test_urldispatch.py::test_dynamic_url_with_name_started_from_underscore PASSED +tests/test_urldispatch.py::test_dynamic_with_trailing_slash PASSED tests/test_urldispatch.py::test_error_on_adding_route_after_wildcard PASSED +tests/test_urldispatch.py::test_error_on_double_route_adding PASSED +tests/test_urldispatch.py::test_expect_handler_non_coroutine PASSED +tests/test_urldispatch.py::test_frozen_app_on_subapp PASSED +tests/test_urldispatch.py::test_frozen_router PASSED +tests/test_urldispatch.py::test_frozen_router_subapp PASSED tests/test_urldispatch.py::test_http_exception_is_none_when_resolved PASSED tests/test_urldispatch.py::test_http_exception_is_not_none_when_not_resolved PASSED -tests/test_urldispatch.py::test_match_info_get_info_plain PASSED +tests/test_urldispatch.py::test_invalid_route_name[class] PASSED +tests/test_urldispatch.py::test_invalid_route_name[invalid name] PASSED +tests/test_urldispatch.py::test_iter PASSED +tests/test_urldispatch.py::test_len PASSED +tests/test_urldispatch.py::test_match_domain[*.example.com-a.example.com-True] PASSED +tests/test_urldispatch.py::test_match_domain[*.example.com-example.com-False] PASSED +tests/test_urldispatch.py::test_match_domain[*.example.com-jpg.example.com-True] PASSED +tests/test_urldispatch.py::test_match_domain[\u043f\u0443\u043d\u0438\u043a\u043e\u0434-xn--d1ahgkhc2a-True] PASSED +tests/test_urldispatch.py::test_match_domain[example.com-example.com-True] PASSED +tests/test_urldispatch.py::test_match_domain[example.com:81-example.com-False] PASSED +tests/test_urldispatch.py::test_match_domain[example.com:81-example.com:81-True] PASSED tests/test_urldispatch.py::test_match_info_get_info_dynamic PASSED tests/test_urldispatch.py::test_match_info_get_info_dynamic2 PASSED -tests/test_urldispatch.py::test_static_resource_get_info PASSED -tests/test_urldispatch.py::test_system_route_get_info PASSED -tests/test_urldispatch.py::test_resources_view_len PASSED -tests/test_urldispatch.py::test_resources_view_iter PASSED -tests/test_urldispatch.py::test_resources_view_contains PASSED +tests/test_urldispatch.py::test_match_info_get_info_plain PASSED +tests/test_urldispatch.py::test_match_info_with_plus PASSED +tests/test_urldispatch.py::test_match_second_result_in_table PASSED +tests/test_urldispatch.py::test_named_resources PASSED +tests/test_urldispatch.py::test_named_resources_abc PASSED +tests/test_urldispatch.py::test_not_allowed_repr PASSED +tests/test_urldispatch.py::test_not_found_repr PASSED +tests/test_urldispatch.py::test_plain_not_match PASSED +tests/test_urldispatch.py::test_plain_resource_canonical PASSED +tests/test_urldispatch.py::test_prefixed_subapp_empty_route PASSED +tests/test_urldispatch.py::test_prefixed_subapp_overlap PASSED +tests/test_urldispatch.py::test_prefixed_subapp_resource_canonical PASSED +tests/test_urldispatch.py::test_prefixed_subapp_root_route PASSED +tests/test_urldispatch.py::test_raise_method_not_allowed PASSED +tests/test_urldispatch.py::test_raise_method_not_found PASSED +tests/test_urldispatch.py::test_register_uncommon_http_methods PASSED +tests/test_urldispatch.py::test_regular_match_info PASSED +tests/test_urldispatch.py::test_resource_iter PASSED +tests/test_urldispatch.py::test_resource_route_match PASSED tests/test_urldispatch.py::test_resources_abc PASSED -tests/test_urldispatch.py::test_static_route_user_home SKIPPED (aiohttp -folder is not placed in user's HOME) +tests/test_urldispatch.py::test_resources_view_contains PASSED +tests/test_urldispatch.py::test_resources_view_iter PASSED +tests/test_urldispatch.py::test_resources_view_len PASSED +tests/test_urldispatch.py::test_route_dynamic PASSED +tests/test_urldispatch.py::test_route_dynamic_quoting PASSED +tests/test_urldispatch.py::test_route_dynamic_with_regex PASSED +tests/test_urldispatch.py::test_route_dynamic_with_regex_spec PASSED +tests/test_urldispatch.py::test_route_dynamic_with_regex_spec_and_trailing_slash PASSED +tests/test_urldispatch.py::test_route_plain PASSED +tests/test_urldispatch.py::test_route_unknown_route_name PASSED +tests/test_urldispatch.py::test_routes_abc PASSED +tests/test_urldispatch.py::test_routes_view_contains PASSED +tests/test_urldispatch.py::test_routes_view_iter PASSED +tests/test_urldispatch.py::test_routes_view_len PASSED +tests/test_urldispatch.py::test_set_options_route PASSED +tests/test_urldispatch.py::test_static_adds_slash PASSED +tests/test_urldispatch.py::test_static_not_match PASSED +tests/test_urldispatch.py::test_static_remove_trailing_slash PASSED +tests/test_urldispatch.py::test_static_repr PASSED +tests/test_urldispatch.py::test_static_resource_canonical PASSED +tests/test_urldispatch.py::test_static_resource_get_info PASSED tests/test_urldispatch.py::test_static_route_points_to_file PASSED -tests/test_urldispatch.py::test_404_for_static_resource PASSED -tests/test_urldispatch.py::test_405_for_resource_adapter PASSED -tests/test_urldispatch.py::test_check_allowed_method_for_found_resource PASSED -tests/test_urldispatch.py::test_url_for_in_static_resource PASSED -tests/test_urldispatch.py::test_url_for_in_static_resource_pathlib PASSED -tests/test_urldispatch.py::test_url_for_in_resource_route PASSED +tests/test_urldispatch.py::test_static_route_user_home SKIPPED tests/test_urldispatch.py::test_subapp_get_info PASSED -tests/test_urldispatch.py::test_domain_validation_error[None-TypeError] PASSED -tests/test_urldispatch.py::test_domain_validation_error[-ValueError] PASSED -tests/test_urldispatch.py::test_domain_validation_error[http://dom-ValueError] PASSED -tests/test_urldispatch.py::test_domain_validation_error[*.example.com-ValueError] PASSED -tests/test_urldispatch.py::test_domain_validation_error[example$com-ValueError] PASSED -tests/test_urldispatch.py::test_domain_valid PASSED -tests/test_urldispatch.py::test_match_domain[example.com-example.com-True] PASSED -tests/test_urldispatch.py::test_match_domain[example.com:81-example.com:81-True] PASSED -tests/test_urldispatch.py::test_match_domain[example.com:81-example.com-False] PASSED -tests/test_urldispatch.py::test_match_domain[\u043f\u0443\u043d\u0438\u043a\u043e\u0434-xn--d1ahgkhc2a-True] PASSED -tests/test_urldispatch.py::test_match_domain[*.example.com-jpg.example.com-True] PASSED -tests/test_urldispatch.py::test_match_domain[*.example.com-a.example.com-True] PASSED -tests/test_urldispatch.py::test_match_domain[*.example.com-example.com-False] PASSED -tests/test_urldispatch.py::test_add_subapp_errors PASSED +tests/test_urldispatch.py::test_subapp_iter PASSED +tests/test_urldispatch.py::test_subapp_len PASSED +tests/test_urldispatch.py::test_subapp_repr PASSED tests/test_urldispatch.py::test_subapp_rule_resource PASSED -tests/test_urldispatch.py::test_add_domain_not_str[pyloop] PASSED -tests/test_urldispatch.py::test_add_domain[pyloop] PASSED tests/test_urldispatch.py::test_subapp_url_for PASSED -tests/test_urldispatch.py::test_subapp_repr PASSED -tests/test_urldispatch.py::test_subapp_len PASSED -tests/test_urldispatch.py::test_subapp_iter PASSED -tests/test_urldispatch.py::test_invalid_route_name[invalid name] PASSED -tests/test_urldispatch.py::test_invalid_route_name[class] PASSED -tests/test_urldispatch.py::test_frozen_router PASSED -tests/test_urldispatch.py::test_frozen_router_subapp PASSED -tests/test_urldispatch.py::test_frozen_app_on_subapp PASSED -tests/test_urldispatch.py::test_set_options_route PASSED -tests/test_urldispatch.py::test_dynamic_url_with_name_started_from_underscore PASSED -tests/test_urldispatch.py::test_cannot_add_subapp_with_empty_prefix PASSED -tests/test_urldispatch.py::test_cannot_add_subapp_with_slash_prefix PASSED -tests/test_urldispatch.py::test_convert_empty_path_to_slash_on_freezing PASSED -tests/test_urldispatch.py::test_deprecate_non_coroutine PASSED -tests/test_urldispatch.py::test_plain_resource_canonical PASSED -tests/test_urldispatch.py::test_dynamic_resource_canonical PASSED -tests/test_urldispatch.py::test_static_resource_canonical PASSED -tests/test_urldispatch.py::test_prefixed_subapp_resource_canonical PASSED -tests/test_urldispatch.py::test_prefixed_subapp_overlap PASSED -tests/test_urldispatch.py::test_prefixed_subapp_empty_route PASSED -tests/test_urldispatch.py::test_prefixed_subapp_root_route PASSED -tests/test_web_app.py::test_app_ctor PASSED +tests/test_urldispatch.py::test_system_route_get_info PASSED +tests/test_urldispatch.py::test_url_for_in_resource_route PASSED +tests/test_urldispatch.py::test_url_for_in_static_resource PASSED +tests/test_urldispatch.py::test_url_for_in_static_resource_pathlib PASSED +tests/test_urldispatch.py::test_view_route PASSED +tests/test_web_app.py::test_app_boolean PASSED tests/test_web_app.py::test_app_call PASSED +tests/test_web_app.py::test_app_ctor PASSED +tests/test_web_app.py::test_app_custom_attr SKIPPED tests/test_web_app.py::test_app_default_loop PASSED -tests/test_web_app.py::test_set_loop PASSED -tests/test_web_app.py::test_set_loop_default_loop PASSED -tests/test_web_app.py::test_set_loop_with_different_loops PASSED -tests/test_web_app.py::test_app_make_handler_debug_exc[True] PASSED -tests/test_web_app.py::test_app_make_handler_debug_exc[False] PASSED -tests/test_web_app.py::test_app_make_handler_args PASSED +tests/test_web_app.py::test_app_freeze PASSED +tests/test_web_app.py::test_app_get PASSED +tests/test_web_app.py::test_app_inheritance PASSED +tests/test_web_app.py::test_app_iter PASSED tests/test_web_app.py::test_app_make_handler_access_log_class PASSED +tests/test_web_app.py::test_app_make_handler_args PASSED +tests/test_web_app.py::test_app_make_handler_debug_exc[False] PASSED +tests/test_web_app.py::test_app_make_handler_debug_exc[True] PASSED tests/test_web_app.py::test_app_make_handler_raises_deprecation_warning PASSED -tests/test_web_app.py::test_app_register_on_finish PASSED tests/test_web_app.py::test_app_register_coro PASSED -tests/test_web_app.py::test_non_default_router PASSED -tests/test_web_app.py::test_logging PASSED -tests/test_web_app.py::test_on_shutdown PASSED -tests/test_web_app.py::test_on_startup PASSED +tests/test_web_app.py::test_app_register_on_finish PASSED +tests/test_web_app.py::test_app_run_middlewares PASSED +tests/test_web_app.py::test_app_str_keys PASSED tests/test_web_app.py::test_appkey PASSED +tests/test_web_app.py::test_appkey_repr_annotated PASSED tests/test_web_app.py::test_appkey_repr_concrete PASSED tests/test_web_app.py::test_appkey_repr_nonconcrete PASSED -tests/test_web_app.py::test_appkey_repr_annotated PASSED -tests/test_web_app.py::test_app_str_keys PASSED -tests/test_web_app.py::test_app_get PASSED -tests/test_web_app.py::test_app_freeze PASSED -tests/test_web_app.py::test_equality PASSED -tests/test_web_app.py::test_app_run_middlewares PASSED -tests/test_web_app.py::test_subapp_pre_frozen_after_adding PASSED -tests/test_web_app.py::test_app_inheritance PASSED -tests/test_web_app.py::test_app_custom_attr SKIPPED (The check is -applied in DEBUG mode only) tests/test_web_app.py::test_cleanup_ctx PASSED -tests/test_web_app.py::test_cleanup_ctx_exception_on_startup PASSED -tests/test_web_app.py::test_cleanup_ctx_exception_on_cleanup PASSED tests/test_web_app.py::test_cleanup_ctx_cleanup_after_exception PASSED -tests/test_web_app.py::test_cleanup_ctx_exception_on_cleanup_multiple[Exception] PASSED +tests/test_web_app.py::test_cleanup_ctx_exception_on_cleanup PASSED tests/test_web_app.py::test_cleanup_ctx_exception_on_cleanup_multiple[CancelledError] PASSED +tests/test_web_app.py::test_cleanup_ctx_exception_on_cleanup_multiple[Exception] PASSED +tests/test_web_app.py::test_cleanup_ctx_exception_on_startup PASSED tests/test_web_app.py::test_cleanup_ctx_multiple_yields PASSED -tests/test_web_app.py::test_subapp_chained_config_dict_visibility[pyloop] PASSED +tests/test_web_app.py::test_equality PASSED +tests/test_web_app.py::test_logging PASSED +tests/test_web_app.py::test_non_default_router PASSED +tests/test_web_app.py::test_on_shutdown PASSED +tests/test_web_app.py::test_on_startup PASSED +tests/test_web_app.py::test_set_loop PASSED +tests/test_web_app.py::test_set_loop_default_loop PASSED +tests/test_web_app.py::test_set_loop_with_different_loops PASSED tests/test_web_app.py::test_subapp_chained_config_dict_overriding[pyloop] PASSED +tests/test_web_app.py::test_subapp_chained_config_dict_visibility[pyloop] PASSED tests/test_web_app.py::test_subapp_on_startup[pyloop] PASSED -tests/test_web_app.py::test_app_iter PASSED -tests/test_web_app.py::test_app_boolean PASSED +tests/test_web_app.py::test_subapp_pre_frozen_after_adding PASSED +tests/test_web_cli.py::test_entry_func_call PASSED tests/test_web_cli.py::test_entry_func_empty PASSED -tests/test_web_cli.py::test_entry_func_only_module PASSED +tests/test_web_cli.py::test_entry_func_non_existent_attribute PASSED +tests/test_web_cli.py::test_entry_func_non_existent_module PASSED tests/test_web_cli.py::test_entry_func_only_function PASSED +tests/test_web_cli.py::test_entry_func_only_module PASSED tests/test_web_cli.py::test_entry_func_only_separator PASSED tests/test_web_cli.py::test_entry_func_relative_module PASSED -tests/test_web_cli.py::test_entry_func_non_existent_module PASSED -tests/test_web_cli.py::test_entry_func_non_existent_attribute PASSED +tests/test_web_cli.py::test_path_and_host PASSED +tests/test_web_cli.py::test_path_no_host PASSED tests/test_web_cli.py::test_path_when_unsupported PASSED -tests/test_web_cli.py::test_entry_func_call PASSED tests/test_web_cli.py::test_running_application PASSED -tests/test_web_exceptions.py::test_all_http_exceptions_exported PASSED -tests/test_web_exceptions.py::test_HTTPOk PASSED -tests/test_web_exceptions.py::test_terminal_classes_has_status_code PASSED +tests/test_web_exceptions.py::test_HTTPException_retains_cause PASSED +tests/test_web_exceptions.py::test_HTTPException_retains_cookie[pyloop] PASSED tests/test_web_exceptions.py::test_HTTPFound PASSED tests/test_web_exceptions.py::test_HTTPFound_empty_location PASSED tests/test_web_exceptions.py::test_HTTPFound_location_CRLF PASSED tests/test_web_exceptions.py::test_HTTPMethodNotAllowed PASSED -tests/test_web_exceptions.py::test_override_body_with_text PASSED -tests/test_web_exceptions.py::test_override_body_with_binary PASSED +tests/test_web_exceptions.py::test_HTTPOk PASSED +tests/test_web_exceptions.py::test_all_http_exceptions_exported PASSED tests/test_web_exceptions.py::test_default_body PASSED tests/test_web_exceptions.py::test_empty_body_204 PASSED tests/test_web_exceptions.py::test_empty_body_205 PASSED tests/test_web_exceptions.py::test_empty_body_304 PASSED -tests/test_web_exceptions.py::test_no_link_451 PASSED -tests/test_web_exceptions.py::test_link_none_451 PASSED +tests/test_web_exceptions.py::test_link_CRLF_451 PASSED tests/test_web_exceptions.py::test_link_empty_451 PASSED +tests/test_web_exceptions.py::test_link_none_451 PASSED tests/test_web_exceptions.py::test_link_str_451 PASSED tests/test_web_exceptions.py::test_link_url_451 PASSED -tests/test_web_exceptions.py::test_link_CRLF_451 PASSED -tests/test_web_exceptions.py::test_HTTPException_retains_cause PASSED -tests/test_web_exceptions.py::test_HTTPException_retains_cookie[pyloop] PASSED -tests/test_web_exceptions.py::test_unicode_text_body_unauthorized PASSED tests/test_web_exceptions.py::test_multiline_reason PASSED -tests/test_web_functional.py::test_simple_get[pyloop] PASSED -tests/test_web_functional.py::test_simple_get_with_text[pyloop] PASSED -tests/test_web_functional.py::test_handler_returns_not_response[pyloop] PASSED -tests/test_web_functional.py::test_handler_returns_none[pyloop] PASSED -tests/test_web_functional.py::test_handler_returns_not_response_after_100expect[pyloop] PASSED -tests/test_web_functional.py::test_head_returns_empty_body[pyloop] PASSED -tests/test_web_functional.py::test_default_content_type_no_body[pyloop-201] PASSED -tests/test_web_functional.py::test_default_content_type_no_body[pyloop-204] PASSED -tests/test_web_functional.py::test_default_content_type_no_body[pyloop-404] PASSED -tests/test_web_functional.py::test_response_before_complete[pyloop] PASSED -tests/test_web_functional.py::test_cancel_shutdown[pyloop] SKIPPED -tests/test_web_functional.py::test_post_form[pyloop] PASSED -tests/test_web_functional.py::test_post_text[pyloop] PASSED -tests/test_web_functional.py::test_post_json[pyloop] PASSED -tests/test_web_functional.py::test_multipart[pyloop] PASSED -tests/test_web_functional.py::test_multipart_empty[pyloop] PASSED -tests/test_web_functional.py::test_multipart_content_transfer_encoding[pyloop] PASSED -tests/test_web_functional.py::test_render_redirect[pyloop] PASSED -tests/test_web_functional.py::test_post_single_file[pyloop] PASSED -tests/test_web_functional.py::test_files_upload_with_same_key[pyloop] PASSED -tests/test_web_functional.py::test_post_files[pyloop] PASSED -tests/test_web_functional.py::test_release_post_data[pyloop] PASSED -tests/test_web_functional.py::test_post_form_with_duplicate_keys[pyloop] PASSED -tests/test_web_functional.py::test_repr_for_application PASSED -tests/test_web_functional.py::test_expect_default_handler_unknown[pyloop] PASSED +tests/test_web_exceptions.py::test_no_link_451 PASSED +tests/test_web_exceptions.py::test_override_body_with_binary PASSED +tests/test_web_exceptions.py::test_override_body_with_text PASSED +tests/test_web_exceptions.py::test_terminal_classes_has_status_code PASSED +tests/test_web_exceptions.py::test_unicode_text_body_unauthorized PASSED tests/test_web_functional.py::test_100_continue[pyloop] PASSED tests/test_web_functional.py::test_100_continue_custom[pyloop] PASSED tests/test_web_functional.py::test_100_continue_custom_response[pyloop] PASSED -tests/test_web_functional.py::test_expect_handler_custom_response[pyloop] PASSED -tests/test_web_functional.py::test_100_continue_for_not_found[pyloop] PASSED tests/test_web_functional.py::test_100_continue_for_not_allowed[pyloop] PASSED -tests/test_web_functional.py::test_http11_keep_alive_default[pyloop] PASSED -tests/test_web_functional.py::test_http10_keep_alive_default[pyloop] XFAIL -tests/test_web_functional.py::test_http10_keep_alive_with_headers_close[pyloop] PASSED -tests/test_web_functional.py::test_http10_keep_alive_with_headers[pyloop] PASSED -tests/test_web_functional.py::test_upload_file[pyloop] PASSED -tests/test_web_functional.py::test_upload_file_object[pyloop] PASSED +tests/test_web_functional.py::test_100_continue_for_not_found[pyloop] PASSED +tests/test_web_functional.py::test_app_add_routes[pyloop] PASSED +tests/test_web_functional.py::test_app_max_client_size[pyloop] PASSED +tests/test_web_functional.py::test_app_max_client_size_adjusted[pyloop] PASSED +tests/test_web_functional.py::test_app_max_client_size_none[pyloop] PASSED +tests/test_web_functional.py::test_auto_decompress[pyloop-False-compressed] PASSED +tests/test_web_functional.py::test_auto_decompress[pyloop-True-uncompressed] PASSED +tests/test_web_functional.py::test_await[pyloop] PASSED +tests/test_web_functional.py::test_bad_method_for_c_http_parser_not_hangs[pyloop] PASSED +tests/test_web_functional.py::test_bad_request_payload[pyloop] PASSED +tests/test_web_functional.py::test_cancel_shutdown[pyloop] SKIPPED +tests/test_web_functional.py::test_context_manager_close_on_release[pyloop] PASSED +tests/test_web_functional.py::test_custom_date_header[pyloop] PASSED +tests/test_web_functional.py::test_default_content_type_no_body[pyloop-201] PASSED +tests/test_web_functional.py::test_default_content_type_no_body[pyloop-204] PASSED +tests/test_web_functional.py::test_default_content_type_no_body[pyloop-404] PASSED +tests/test_web_functional.py::test_empty_content_for_query_with_body[pyloop] PASSED +tests/test_web_functional.py::test_empty_content_for_query_without_body[pyloop-delete] PASSED tests/test_web_functional.py::test_empty_content_for_query_without_body[pyloop-get] PASSED -tests/test_web_functional.py::test_empty_content_for_query_without_body[pyloop-post0] PASSED tests/test_web_functional.py::test_empty_content_for_query_without_body[pyloop-options] PASSED +tests/test_web_functional.py::test_empty_content_for_query_without_body[pyloop-patch] PASSED +tests/test_web_functional.py::test_empty_content_for_query_without_body[pyloop-post0] PASSED tests/test_web_functional.py::test_empty_content_for_query_without_body[pyloop-post1] PASSED tests/test_web_functional.py::test_empty_content_for_query_without_body[pyloop-put] PASSED -tests/test_web_functional.py::test_empty_content_for_query_without_body[pyloop-patch] PASSED -tests/test_web_functional.py::test_empty_content_for_query_without_body[pyloop-delete] PASSED -tests/test_web_functional.py::test_empty_content_for_query_with_body[pyloop] PASSED +tests/test_web_functional.py::test_expect_default_handler_unknown[pyloop] PASSED +tests/test_web_functional.py::test_expect_handler_custom_response[pyloop] PASSED +tests/test_web_functional.py::test_files_upload_with_same_key[pyloop] PASSED tests/test_web_functional.py::test_get_with_empty_arg[pyloop] PASSED +tests/test_web_functional.py::test_get_with_empty_arg_with_equal[pyloop] PASSED +tests/test_web_functional.py::test_handler_returns_none[pyloop] PASSED +tests/test_web_functional.py::test_handler_returns_not_response[pyloop] PASSED +tests/test_web_functional.py::test_handler_returns_not_response_after_100expect[pyloop] PASSED +tests/test_web_functional.py::test_head_returns_empty_body[pyloop] PASSED +tests/test_web_functional.py::test_http10_keep_alive_default[pyloop] XFAIL +tests/test_web_functional.py::test_http10_keep_alive_with_headers[pyloop] PASSED +tests/test_web_functional.py::test_http10_keep_alive_with_headers_close[pyloop] PASSED +tests/test_web_functional.py::test_http11_keep_alive_default[pyloop] PASSED +tests/test_web_functional.py::test_httpfound_cookies_302[pyloop] PASSED +tests/test_web_functional.py::test_iter_any[pyloop] PASSED +tests/test_web_functional.py::test_keepalive_race_condition[pyloop] PASSED tests/test_web_functional.py::test_large_header[pyloop] PASSED tests/test_web_functional.py::test_large_header_allowed[pyloop] PASSED -tests/test_web_functional.py::test_get_with_empty_arg_with_equal[pyloop] PASSED +tests/test_web_functional.py::test_multipart[pyloop] PASSED +tests/test_web_functional.py::test_multipart_content_transfer_encoding[pyloop] PASSED +tests/test_web_functional.py::test_multipart_empty[pyloop] PASSED +tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version0-101] PASSED +tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version0-204] PASSED +tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version0-304] PASSED +tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version1-101] PASSED +tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version1-204] PASSED +tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version1-304] PASSED +tests/test_web_functional.py::test_post_files[pyloop] PASSED +tests/test_web_functional.py::test_post_form[pyloop] PASSED +tests/test_web_functional.py::test_post_form_with_duplicate_keys[pyloop] PASSED +tests/test_web_functional.py::test_post_json[pyloop] PASSED +tests/test_web_functional.py::test_post_max_client_size[pyloop] PASSED +tests/test_web_functional.py::test_post_max_client_size_for_file[pyloop] PASSED +tests/test_web_functional.py::test_post_single_file[pyloop] PASSED +tests/test_web_functional.py::test_post_text[pyloop] PASSED +tests/test_web_functional.py::test_read_bufsize[pyloop] PASSED +tests/test_web_functional.py::test_redirect_url[pyloop] PASSED +tests/test_web_functional.py::test_release_post_data[pyloop] PASSED +tests/test_web_functional.py::test_render_redirect[pyloop] PASSED +tests/test_web_functional.py::test_repr_for_application PASSED +tests/test_web_functional.py::test_request_clone[pyloop] PASSED +tests/test_web_functional.py::test_request_headers_type[pyloop] PASSED +tests/test_web_functional.py::test_request_path[pyloop] PASSED +tests/test_web_functional.py::test_request_tracing[pyloop] PASSED +tests/test_web_functional.py::test_requests_count[pyloop] PASSED +tests/test_web_functional.py::test_response_101_204_no_content_length_http11[pyloop-101] PASSED +tests/test_web_functional.py::test_response_101_204_no_content_length_http11[pyloop-204] PASSED +tests/test_web_functional.py::test_response_before_complete[pyloop] PASSED +tests/test_web_functional.py::test_response_context_manager[pyloop] PASSED +tests/test_web_functional.py::test_response_context_manager_error[pyloop] PASSED +tests/test_web_functional.py::test_response_prepared_with_clone[pyloop] PASSED tests/test_web_functional.py::test_response_with_async_gen[pyloop] PASSED -tests/test_web_functional.py::test_response_with_streamer[pyloop] PASSED tests/test_web_functional.py::test_response_with_async_gen_no_params[pyloop] PASSED -tests/test_web_functional.py::test_response_with_streamer_no_params[pyloop] PASSED +tests/test_web_functional.py::test_response_with_bodypart[pyloop] PASSED +tests/test_web_functional.py::test_response_with_bodypart_invalid_name[pyloop] PASSED +tests/test_web_functional.py::test_response_with_bodypart_named[pyloop] PASSED tests/test_web_functional.py::test_response_with_file[pyloop] PASSED tests/test_web_functional.py::test_response_with_file_ctype[pyloop] PASSED tests/test_web_functional.py::test_response_with_payload_disp[pyloop] PASSED @@ -2489,838 +2555,828 @@ tests/test_web_functional.py::test_response_with_precompressed_body[pyloop-compr tests/test_web_functional.py::test_response_with_precompressed_body[pyloop-compressor1-deflate] PASSED tests/test_web_functional.py::test_response_with_precompressed_body[pyloop-compressor2-deflate] PASSED tests/test_web_functional.py::test_response_with_precompressed_body_brotli[pyloop] PASSED -tests/test_web_functional.py::test_bad_request_payload[pyloop] PASSED -tests/test_web_functional.py::test_stream_response_multiple_chunks[pyloop] PASSED -tests/test_web_functional.py::test_start_without_routes[pyloop] PASSED -tests/test_web_functional.py::test_requests_count[pyloop] PASSED -tests/test_web_functional.py::test_redirect_url[pyloop] PASSED +tests/test_web_functional.py::test_response_with_streamer[pyloop] PASSED +tests/test_web_functional.py::test_response_with_streamer_no_params[pyloop] PASSED +tests/test_web_functional.py::test_return_http_exception_deprecated[pyloop] PASSED +tests/test_web_functional.py::test_signal_on_error_handler[pyloop] PASSED +tests/test_web_functional.py::test_simple_get[pyloop] PASSED +tests/test_web_functional.py::test_simple_get_with_text[pyloop] PASSED tests/test_web_functional.py::test_simple_subapp[pyloop] PASSED -tests/test_web_functional.py::test_subapp_reverse_url[pyloop] PASSED -tests/test_web_functional.py::test_subapp_reverse_variable_url[pyloop] PASSED -tests/test_web_functional.py::test_subapp_reverse_static_url[pyloop] PASSED +tests/test_web_functional.py::test_start_without_routes[pyloop] PASSED +tests/test_web_functional.py::test_stream_response_headers_204[pyloop] PASSED +tests/test_web_functional.py::test_stream_response_multiple_chunks[pyloop] PASSED tests/test_web_functional.py::test_subapp_app[pyloop] PASSED -tests/test_web_functional.py::test_subapp_not_found[pyloop] PASSED -tests/test_web_functional.py::test_subapp_not_found2[pyloop] PASSED -tests/test_web_functional.py::test_subapp_not_allowed[pyloop] PASSED tests/test_web_functional.py::test_subapp_cannot_add_app_in_handler[pyloop] PASSED -tests/test_web_functional.py::test_subapp_middlewares[pyloop] PASSED -tests/test_web_functional.py::test_subapp_on_response_prepare[pyloop] PASSED -tests/test_web_functional.py::test_subapp_on_startup[pyloop] PASSED -tests/test_web_functional.py::test_subapp_on_shutdown[pyloop] PASSED -tests/test_web_functional.py::test_subapp_on_cleanup[pyloop] PASSED -tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/sub/-expected0-AC] PASSED tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/-expected1-AC] PASSED -tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/sub/-expected2-A] PASSED tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/-expected3-A] PASSED -tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/sub/-expected4-C] PASSED tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/-expected5-C] PASSED -tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/sub/-expected6-] PASSED tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/-expected7-] PASSED -tests/test_web_functional.py::test_custom_date_header[pyloop] PASSED -tests/test_web_functional.py::test_response_prepared_with_clone[pyloop] PASSED -tests/test_web_functional.py::test_app_max_client_size[pyloop] PASSED -tests/test_web_functional.py::test_app_max_client_size_adjusted[pyloop] PASSED -tests/test_web_functional.py::test_app_max_client_size_none[pyloop] PASSED -tests/test_web_functional.py::test_post_max_client_size[pyloop] PASSED -tests/test_web_functional.py::test_post_max_client_size_for_file[pyloop] PASSED -tests/test_web_functional.py::test_response_with_bodypart[pyloop] PASSED -tests/test_web_functional.py::test_response_with_bodypart_named[pyloop] PASSED -tests/test_web_functional.py::test_response_with_bodypart_invalid_name[pyloop] PASSED -tests/test_web_functional.py::test_request_clone[pyloop] PASSED -tests/test_web_functional.py::test_await[pyloop] PASSED -tests/test_web_functional.py::test_response_context_manager[pyloop] PASSED -tests/test_web_functional.py::test_response_context_manager_error[pyloop] PASSED -tests/test_web_functional.py::test_context_manager_close_on_release[pyloop] PASSED -tests/test_web_functional.py::test_iter_any[pyloop] PASSED -tests/test_web_functional.py::test_request_tracing[pyloop] PASSED -tests/test_web_functional.py::test_return_http_exception_deprecated[pyloop] PASSED -tests/test_web_functional.py::test_request_path[pyloop] PASSED -tests/test_web_functional.py::test_app_add_routes[pyloop] PASSED -tests/test_web_functional.py::test_request_headers_type[pyloop] PASSED -tests/test_web_functional.py::test_signal_on_error_handler[pyloop] PASSED -tests/test_web_functional.py::test_bad_method_for_c_http_parser_not_hangs[pyloop] PASSED -tests/test_web_functional.py::test_read_bufsize[pyloop] PASSED -tests/test_web_functional.py::test_auto_decompress[pyloop-True-uncompressed] PASSED -tests/test_web_functional.py::test_auto_decompress[pyloop-False-compressed] PASSED -tests/test_web_functional.py::test_response_101_204_no_content_length_http11[pyloop-101] PASSED -tests/test_web_functional.py::test_response_101_204_no_content_length_http11[pyloop-204] PASSED -tests/test_web_functional.py::test_stream_response_headers_204[pyloop] PASSED -tests/test_web_functional.py::test_httpfound_cookies_302[pyloop] PASSED -tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version0-101] PASSED -tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version0-204] PASSED -tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version0-304] PASSED -tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version1-101] PASSED -tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version1-204] PASSED -tests/test_web_functional.py::test_no_body_for_1xx_204_304_responses[pyloop-version1-304] PASSED -tests/test_web_functional.py::test_keepalive_race_condition[pyloop] PASSED -tests/test_web_log.py::test_access_logger_format PASSED -tests/test_web_log.py::test_access_logger_atoms[%t-[01/Jan/1843:00:29:56 +0800]-extra0] PASSED +tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/sub/-expected0-AC] PASSED +tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/sub/-expected2-A] PASSED +tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/sub/-expected4-C] PASSED +tests/test_web_functional.py::test_subapp_middleware_context[pyloop-/sub/-expected6-] PASSED +tests/test_web_functional.py::test_subapp_middlewares[pyloop] PASSED +tests/test_web_functional.py::test_subapp_not_allowed[pyloop] PASSED +tests/test_web_functional.py::test_subapp_not_found2[pyloop] PASSED +tests/test_web_functional.py::test_subapp_not_found[pyloop] PASSED +tests/test_web_functional.py::test_subapp_on_cleanup[pyloop] PASSED +tests/test_web_functional.py::test_subapp_on_response_prepare[pyloop] PASSED +tests/test_web_functional.py::test_subapp_on_shutdown[pyloop] PASSED +tests/test_web_functional.py::test_subapp_on_startup[pyloop] PASSED +tests/test_web_functional.py::test_subapp_reverse_static_url[pyloop] PASSED +tests/test_web_functional.py::test_subapp_reverse_url[pyloop] PASSED +tests/test_web_functional.py::test_subapp_reverse_variable_url[pyloop] PASSED +tests/test_web_functional.py::test_upload_file[pyloop] PASSED +tests/test_web_functional.py::test_upload_file_object[pyloop] PASSED tests/test_web_log.py::test_access_logger_atoms[%a %t %P %r %s %b %T %Tf %D "%{H1}i" "%{H2}i"-127.0.0.2 [01/Jan/1843:00:29:56 +0800] <42> GET /path HTTP/1.1 200 42 3 3.141593 3141593 "a" "b"-extra1] PASSED +tests/test_web_log.py::test_access_logger_atoms[%t-[01/Jan/1843:00:29:56 +0800]-extra0] PASSED tests/test_web_log.py::test_access_logger_dicts PASSED +tests/test_web_log.py::test_access_logger_feeds_logger PASSED +tests/test_web_log.py::test_access_logger_format PASSED tests/test_web_log.py::test_access_logger_unix_socket PASSED -tests/test_web_log.py::test_logger_no_message PASSED +tests/test_web_log.py::test_contextvars_logger[pyloop] PASSED +tests/test_web_log.py::test_logger_abc PASSED +tests/test_web_log.py::test_logger_does_not_log_when_not_enabled[pyloop] PASSED tests/test_web_log.py::test_logger_internal_error PASSED +tests/test_web_log.py::test_logger_no_message PASSED tests/test_web_log.py::test_logger_no_transport PASSED -tests/test_web_log.py::test_logger_abc PASSED -tests/test_web_log.py::test_contextvars_logger[pyloop] PASSED -tests/test_web_log.py::test_logger_does_nothing_when_disabled PASSED -tests/test_web_middleware.py::test_middleware_modifies_response[pyloop] PASSED -tests/test_web_middleware.py::test_middleware_handles_exception[pyloop] PASSED -tests/test_web_middleware.py::test_middleware_chain[pyloop] PASSED -tests/test_web_middleware.py::test_middleware_subapp[pyloop] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource1-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource1/-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource1/?p1=1&p2=2-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource1?p1=1&p2=2-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource2-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource2/-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource1?p1=1&p2=2-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource1/?p1=1&p2=2-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource2?p1=1&p2=2-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource2/?p1=1&p2=2-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource2/a/b%2Fc-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource2/a/b%2Fc/-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource1/-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2/-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource1?p1=1&p2=2-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource1/?p1=1&p2=2-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2?p1=1&p2=2-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2/?p1=1&p2=2-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2/a/b%2Fc-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2/a/b%2Fc/-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_add_trailing_when_necessary[pyloop-/resource2?p1=1&p2=2-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource1/a///b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource1/a///b/-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource1/a///b/?p=1-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource1/a///b?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource2/a///b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource2/a///b/-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource2/a///b/?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource2/a///b?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource1//a//b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource1//a//b/-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource1//a//b/?p=1-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource1//a//b?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource2//a//b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource2//a//b/-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource2//a//b/?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource2//a//b?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b-200_0] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b-200_1] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b/-200_0] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b/-200_1] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b/?p=1-200_0] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b/?p=1-200_1] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b?p=1-200_0] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b?p=1-200_1] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource1/a/b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource1/a/b/-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource1/a/b/?p=1-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource1/a/b?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource2/a/b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource2/a/b?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_cannot_remove_and_add_slash PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/////resource1/a///b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/////resource1/a///b?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/////resource1/a//b/-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/////resource1/a//b/?p=1-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-///resource1//a//b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-///resource1//a//b?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-//resource1//a//b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-//resource1//a//b/-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-//resource1//a//b/?p=1-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-//resource1//a//b?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/resource1/a/b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/resource1/a/b?p=1-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource1-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource1/-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource1/?p1=1&p2=2-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource1?p1=1&p2=2-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource2-404] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource2/-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource1?p1=1&p2=2-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource1/?p1=1&p2=2-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource2?p1=1&p2=2-404] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource2/?p1=1&p2=2-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource2/a/b%2Fc-404] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource2/a/b%2Fc/-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/resource1/a/b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-//resource1//a//b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-//resource1//a//b/-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-///resource1//a//b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/////resource1/a///b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/////resource1/a//b/-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/resource1/a/b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-//resource1//a//b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-//resource1//a//b/?p=1-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-///resource1//a//b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/////resource1/a///b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_merge_slash[pyloop-/////resource1/a//b/?p=1-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource1/a/b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource1/a/b/-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b-200_0] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b/-200_0] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource1//a//b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource1//a//b/-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource1/a///b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource1/a///b/-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource2/a/b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b-200_1] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b/-200_1] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource2//a//b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource2//a//b/-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource2/a///b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource2/a///b/-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource1/a/b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource1/a/b/?p=1-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b?p=1-200_0] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b/?p=1-200_0] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource1//a//b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource1//a//b/?p=1-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource1/a///b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource1/a///b/?p=1-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/resource2/a/b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b?p=1-200_1] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-//resource2//a//b/?p=1-200_1] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource2//a//b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-///resource2//a//b/?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource2/a///b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_append_and_merge_slash[pyloop-/////resource2/a///b/?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource1/a/b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource1/a/b/-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b-404_0] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b/-200_0] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource1//a//b-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource1//a//b/-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_no_trailing_slash_when_disabled[pyloop-/resource2?p1=1&p2=2-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_open_redirects[pyloop-False-False] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_open_redirects[pyloop-False-True] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_open_redirects[pyloop-True-False] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource1/a///b-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource1/a///b/-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource1/a///b///-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource2/a/b-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b-404_1] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b/-200_1] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource1/a///b/?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource1/a///b?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource2/a///b-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource2/a///b/-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource2/a///b/?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource2/a///b?p=1-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource1//a//b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource1//a//b/-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource1//a//b/?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource1//a//b?p=1-200] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource2//a//b-404] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource2//a//b/-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource2/a///b-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource2/a///b/-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource1/a/b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource1/a/b/?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b?p=1-404_0] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource2//a//b/?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource2//a//b?p=1-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b-404_0] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b-404_1] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b/-200_0] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b/-200_1] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b/?p=1-200_0] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource1//a//b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource1//a//b/?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource1/a///b?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource1/a///b/?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource2/a/b?p=1-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b?p=1-404_1] PASSED tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b/?p=1-200_1] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource2//a//b?p=1-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-///resource2//a//b/?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource2/a///b?p=1-404] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/////resource2/a///b/?p=1-200] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_cannot_remove_and_add_slash PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_open_redirects[pyloop-True-False] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_open_redirects[pyloop-False-True] PASSED -tests/test_web_middleware.py::TestNormalizePathMiddleware::test_open_redirects[pyloop-False-False] PASSED -tests/test_web_middleware.py::test_old_style_middleware[pyloop] PASSED -tests/test_web_middleware.py::test_old_style_middleware_class[pyloop] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b?p=1-404_0] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-//resource2//a//b?p=1-404_1] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource1/a/b-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource1/a/b/-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource1/a/b/?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource1/a/b?p=1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource2/a/b-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_and_merge_slash[pyloop-/resource2/a/b?p=1-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource1-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource1/-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource1/?p1=1&p2=2-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource1?p1=1&p2=2-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2/-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2/?p1=1&p2=2-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2/a/b%2Fc-404] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2/a/b%2Fc/-200] PASSED +tests/test_web_middleware.py::TestNormalizePathMiddleware::test_remove_trailing_when_necessary[pyloop-/resource2?p1=1&p2=2-404] PASSED +tests/test_web_middleware.py::test_middleware_chain[pyloop] PASSED +tests/test_web_middleware.py::test_middleware_does_not_leak[pyloop] PASSED +tests/test_web_middleware.py::test_middleware_handles_exception[pyloop] PASSED +tests/test_web_middleware.py::test_middleware_modifies_response[pyloop] PASSED +tests/test_web_middleware.py::test_middleware_subapp[pyloop] PASSED tests/test_web_middleware.py::test_new_style_middleware_class[pyloop] PASSED tests/test_web_middleware.py::test_new_style_middleware_method[pyloop] PASSED +tests/test_web_middleware.py::test_old_style_middleware[pyloop] PASSED +tests/test_web_middleware.py::test_old_style_middleware_class[pyloop] PASSED +tests/test_web_request.py::test___repr__ PASSED +tests/test_web_request.py::test___repr___non_ascii_path PASSED +tests/test_web_request.py::test_absolute_url PASSED tests/test_web_request.py::test_base_ctor PASSED +tests/test_web_request.py::test_calc_content_type_on_getting_charset PASSED +tests/test_web_request.py::test_call_POST_on_GET_request PASSED +tests/test_web_request.py::test_call_POST_on_weird_content_type PASSED +tests/test_web_request.py::test_call_POST_twice PASSED +tests/test_web_request.py::test_cannot_clone_after_read PASSED +tests/test_web_request.py::test_clone PASSED +tests/test_web_request.py::test_clone_absolute_host PASSED +tests/test_web_request.py::test_clone_absolute_scheme PASSED +tests/test_web_request.py::test_clone_client_max_size PASSED +tests/test_web_request.py::test_clone_headers PASSED +tests/test_web_request.py::test_clone_headers_dict PASSED +tests/test_web_request.py::test_clone_host PASSED +tests/test_web_request.py::test_clone_method PASSED +tests/test_web_request.py::test_clone_override_client_max_size PASSED +tests/test_web_request.py::test_clone_rel_url PASSED +tests/test_web_request.py::test_clone_rel_url_str PASSED +tests/test_web_request.py::test_clone_remote PASSED +tests/test_web_request.py::test_clone_scheme PASSED +tests/test_web_request.py::test_content_length PASSED +tests/test_web_request.py::test_content_type_from_spec PASSED +tests/test_web_request.py::test_content_type_from_spec_with_charset PASSED +tests/test_web_request.py::test_content_type_not_specified PASSED tests/test_web_request.py::test_ctor PASSED +tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:40 GMT-expected3-If-Modified-Since-if_modified_since] PASSED +tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:40 GMT-expected3-If-Range-if_range] PASSED +tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:40 GMT-expected3-If-Unmodified-Since-if_unmodified_since] PASSED +tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:80 GMT-None-If-Modified-Since-if_modified_since] PASSED +tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:80 GMT-None-If-Range-if_range] PASSED +tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:80 GMT-None-If-Unmodified-Since-if_unmodified_since] PASSED +tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 4446413 00:56:40 GMT-None-If-Modified-Since-if_modified_since] PASSED +tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 4446413 00:56:40 GMT-None-If-Range-if_range] PASSED +tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 4446413 00:56:40 GMT-None-If-Unmodified-Since-if_unmodified_since] PASSED +tests/test_web_request.py::test_datetime_headers[xxyyzz-None-If-Modified-Since-if_modified_since] PASSED +tests/test_web_request.py::test_datetime_headers[xxyyzz-None-If-Range-if_range] PASSED +tests/test_web_request.py::test_datetime_headers[xxyyzz-None-If-Unmodified-Since-if_unmodified_since] PASSED tests/test_web_request.py::test_deprecated_message PASSED tests/test_web_request.py::test_doubleslashes PASSED -tests/test_web_request.py::test_content_type_not_specified PASSED -tests/test_web_request.py::test_content_type_from_spec PASSED -tests/test_web_request.py::test_content_type_from_spec_with_charset PASSED -tests/test_web_request.py::test_calc_content_type_on_getting_charset PASSED -tests/test_web_request.py::test_urlencoded_querystring PASSED +tests/test_web_request.py::test_eq PASSED +tests/test_web_request.py::test_etag_headers["67ab43", W/"54ed21", "7892,dd"-expected0-If-Match-if_match] PASSED +tests/test_web_request.py::test_etag_headers["67ab43", W/"54ed21", "7892,dd"-expected0-If-None-Match-if_none_match] PASSED +tests/test_web_request.py::test_etag_headers["ascii", "\u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u043d\u0435 ascii", "ascii again"-expected3-If-Match-if_match] PASSED +tests/test_web_request.py::test_etag_headers["ascii", "\u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u043d\u0435 ascii", "ascii again"-expected3-If-None-Match-if_none_match] PASSED +tests/test_web_request.py::test_etag_headers["bfc1ef-5b2c2730249c88ca92d82d"-expected1-If-Match-if_match] PASSED +tests/test_web_request.py::test_etag_headers["bfc1ef-5b2c2730249c88ca92d82d"-expected1-If-None-Match-if_none_match] PASSED +tests/test_web_request.py::test_etag_headers["valid-tag", "also-valid-tag",somegarbage"last-tag"-expected2-If-Match-if_match] PASSED +tests/test_web_request.py::test_etag_headers["valid-tag", "also-valid-tag",somegarbage"last-tag"-expected2-If-None-Match-if_none_match] PASSED +tests/test_web_request.py::test_etag_headers[*-expected4-If-Match-if_match] PASSED +tests/test_web_request.py::test_etag_headers[*-expected4-If-None-Match-if_none_match] PASSED +tests/test_web_request.py::test_forwarded_node_identifier["[2001:db8:cafe::17]"-[2001:db8:cafe::17]] PASSED +tests/test_web_request.py::test_forwarded_node_identifier["[2001:db8:cafe::17]:1234"-[2001:db8:cafe::17]:1234] PASSED +tests/test_web_request.py::test_forwarded_node_identifier[1.2.3.4-1.2.3.4] PASSED +tests/test_web_request.py::test_forwarded_node_identifier[1.2.3.4:1234-1.2.3.4:1234] PASSED +tests/test_web_request.py::test_get_extra_info PASSED +tests/test_web_request.py::test_host_by_host_header PASSED +tests/test_web_request.py::test_http_scheme PASSED +tests/test_web_request.py::test_https_scheme_by_ssl_transport PASSED +tests/test_web_request.py::test_loop_prop PASSED +tests/test_web_request.py::test_make_too_big_request PASSED +tests/test_web_request.py::test_make_too_big_request_adjust_limit PASSED +tests/test_web_request.py::test_make_too_big_request_limit_None PASSED +tests/test_web_request.py::test_match_info PASSED +tests/test_web_request.py::test_multipart_formdata PASSED +tests/test_web_request.py::test_multipart_formdata_file PASSED +tests/test_web_request.py::test_multiple_forwarded_headers PASSED +tests/test_web_request.py::test_multiple_forwarded_headers_bad_syntax PASSED +tests/test_web_request.py::test_multiple_forwarded_headers_injection PASSED +tests/test_web_request.py::test_no_request_cookies PASSED tests/test_web_request.py::test_non_ascii_path PASSED tests/test_web_request.py::test_non_ascii_raw_path PASSED -tests/test_web_request.py::test_absolute_url PASSED -tests/test_web_request.py::test_clone_absolute_scheme PASSED -tests/test_web_request.py::test_clone_absolute_host PASSED -tests/test_web_request.py::test_content_length PASSED +tests/test_web_request.py::test_non_keepalive_on_closing PASSED +tests/test_web_request.py::test_non_keepalive_on_http10 PASSED tests/test_web_request.py::test_range_to_slice_head PASSED tests/test_web_request.py::test_range_to_slice_mid PASSED tests/test_web_request.py::test_range_to_slice_tail_start PASSED tests/test_web_request.py::test_range_to_slice_tail_stop PASSED -tests/test_web_request.py::test_non_keepalive_on_http10 PASSED -tests/test_web_request.py::test_non_keepalive_on_closing PASSED -tests/test_web_request.py::test_call_POST_on_GET_request PASSED -tests/test_web_request.py::test_call_POST_on_weird_content_type PASSED -tests/test_web_request.py::test_call_POST_twice PASSED -tests/test_web_request.py::test_no_request_cookies PASSED +tests/test_web_request.py::test_raw_headers PASSED +tests/test_web_request.py::test_rel_url PASSED +tests/test_web_request.py::test_remote_peername_tcp PASSED +tests/test_web_request.py::test_remote_peername_unix PASSED +tests/test_web_request.py::test_remote_with_closed_transport PASSED tests/test_web_request.py::test_request_cookie PASSED tests/test_web_request.py::test_request_cookie__set_item PASSED -tests/test_web_request.py::test_match_info PASSED -tests/test_web_request.py::test_request_is_mutable_mapping PASSED tests/test_web_request.py::test_request_delitem PASSED -tests/test_web_request.py::test_request_len PASSED +tests/test_web_request.py::test_request_is_mutable_mapping PASSED tests/test_web_request.py::test_request_iter PASSED -tests/test_web_request.py::test___repr__ PASSED -tests/test_web_request.py::test___repr___non_ascii_path PASSED -tests/test_web_request.py::test_http_scheme PASSED -tests/test_web_request.py::test_https_scheme_by_ssl_transport PASSED +tests/test_web_request.py::test_request_len PASSED +tests/test_web_request.py::test_save_state_on_clone PASSED tests/test_web_request.py::test_single_forwarded_header PASSED -tests/test_web_request.py::test_forwarded_node_identifier[1.2.3.4:1234-1.2.3.4:1234] PASSED -tests/test_web_request.py::test_forwarded_node_identifier[1.2.3.4-1.2.3.4] PASSED -tests/test_web_request.py::test_forwarded_node_identifier["[2001:db8:cafe::17]:1234"-[2001:db8:cafe::17]:1234] PASSED -tests/test_web_request.py::test_forwarded_node_identifier["[2001:db8:cafe::17]"-[2001:db8:cafe::17]] PASSED +tests/test_web_request.py::test_single_forwarded_header_bad_separator PASSED tests/test_web_request.py::test_single_forwarded_header_camelcase PASSED -tests/test_web_request.py::test_single_forwarded_header_single_param PASSED -tests/test_web_request.py::test_single_forwarded_header_multiple_param PASSED -tests/test_web_request.py::test_single_forwarded_header_quoted_escaped PASSED tests/test_web_request.py::test_single_forwarded_header_custom_param PASSED tests/test_web_request.py::test_single_forwarded_header_empty_params PASSED -tests/test_web_request.py::test_single_forwarded_header_bad_separator PASSED tests/test_web_request.py::test_single_forwarded_header_injection1 PASSED tests/test_web_request.py::test_single_forwarded_header_injection2 PASSED tests/test_web_request.py::test_single_forwarded_header_long_quoted_string PASSED -tests/test_web_request.py::test_multiple_forwarded_headers PASSED -tests/test_web_request.py::test_multiple_forwarded_headers_bad_syntax PASSED -tests/test_web_request.py::test_multiple_forwarded_headers_injection PASSED -tests/test_web_request.py::test_host_by_host_header PASSED -tests/test_web_request.py::test_raw_headers PASSED -tests/test_web_request.py::test_rel_url PASSED -tests/test_web_request.py::test_url_url PASSED -tests/test_web_request.py::test_url_non_default_port PASSED -tests/test_web_request.py::test_url_ipv6 PASSED -tests/test_web_request.py::test_clone PASSED -tests/test_web_request.py::test_clone_client_max_size PASSED -tests/test_web_request.py::test_clone_override_client_max_size PASSED -tests/test_web_request.py::test_clone_method PASSED -tests/test_web_request.py::test_clone_rel_url PASSED -tests/test_web_request.py::test_clone_rel_url_str PASSED -tests/test_web_request.py::test_clone_headers PASSED -tests/test_web_request.py::test_clone_headers_dict PASSED -tests/test_web_request.py::test_cannot_clone_after_read PASSED -tests/test_web_request.py::test_make_too_big_request PASSED -tests/test_web_request.py::test_make_too_big_request_adjust_limit PASSED -tests/test_web_request.py::test_multipart_formdata PASSED -tests/test_web_request.py::test_multipart_formdata_file PASSED -tests/test_web_request.py::test_make_too_big_request_limit_None PASSED -tests/test_web_request.py::test_remote_peername_tcp PASSED -tests/test_web_request.py::test_remote_peername_unix PASSED -tests/test_web_request.py::test_save_state_on_clone PASSED -tests/test_web_request.py::test_clone_scheme PASSED -tests/test_web_request.py::test_clone_host PASSED -tests/test_web_request.py::test_clone_remote PASSED -tests/test_web_request.py::test_remote_with_closed_transport PASSED +tests/test_web_request.py::test_single_forwarded_header_multiple_param PASSED +tests/test_web_request.py::test_single_forwarded_header_quoted_escaped PASSED +tests/test_web_request.py::test_single_forwarded_header_single_param PASSED tests/test_web_request.py::test_url_http_with_closed_transport PASSED tests/test_web_request.py::test_url_https_with_closed_transport PASSED -tests/test_web_request.py::test_get_extra_info PASSED -tests/test_web_request.py::test_eq PASSED -tests/test_web_request.py::test_loop_prop PASSED -tests/test_web_request.py::test_etag_headers["67ab43", W/"54ed21", "7892,dd"-expected0-If-Match-if_match] PASSED -tests/test_web_request.py::test_etag_headers["67ab43", W/"54ed21", "7892,dd"-expected0-If-None-Match-if_none_match] PASSED -tests/test_web_request.py::test_etag_headers["bfc1ef-5b2c2730249c88ca92d82d"-expected1-If-Match-if_match] PASSED -tests/test_web_request.py::test_etag_headers["bfc1ef-5b2c2730249c88ca92d82d"-expected1-If-None-Match-if_none_match] PASSED -tests/test_web_request.py::test_etag_headers["valid-tag", "also-valid-tag",somegarbage"last-tag"-expected2-If-Match-if_match] PASSED -tests/test_web_request.py::test_etag_headers["valid-tag", "also-valid-tag",somegarbage"last-tag"-expected2-If-None-Match-if_none_match] PASSED -tests/test_web_request.py::test_etag_headers["ascii", "\u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u043d\u0435 ascii", "ascii again"-expected3-If-Match-if_match] PASSED -tests/test_web_request.py::test_etag_headers["ascii", "\u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u043d\u0435 ascii", "ascii again"-expected3-If-None-Match-if_none_match] PASSED -tests/test_web_request.py::test_etag_headers[*-expected4-If-Match-if_match] PASSED -tests/test_web_request.py::test_etag_headers[*-expected4-If-None-Match-if_none_match] PASSED -tests/test_web_request.py::test_datetime_headers[xxyyzz-None-If-Modified-Since-if_modified_since] PASSED -tests/test_web_request.py::test_datetime_headers[xxyyzz-None-If-Unmodified-Since-if_unmodified_since] PASSED -tests/test_web_request.py::test_datetime_headers[xxyyzz-None-If-Range-if_range] PASSED -tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 4446413 00:56:40 GMT-None-If-Modified-Since-if_modified_since] PASSED -tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 4446413 00:56:40 GMT-None-If-Unmodified-Since-if_unmodified_since] PASSED -tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 4446413 00:56:40 GMT-None-If-Range-if_range] PASSED -tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:80 GMT-None-If-Modified-Since-if_modified_since] PASSED -tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:80 GMT-None-If-Unmodified-Since-if_unmodified_since] PASSED -tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:80 GMT-None-If-Range-if_range] PASSED -tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:40 GMT-expected3-If-Modified-Since-if_modified_since] PASSED -tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:40 GMT-expected3-If-Unmodified-Since-if_unmodified_since] PASSED -tests/test_web_request.py::test_datetime_headers[Tue, 08 Oct 2000 00:56:40 GMT-expected3-If-Range-if_range] PASSED -tests/test_web_request_handler.py::test_repr PASSED +tests/test_web_request.py::test_url_ipv6 PASSED +tests/test_web_request.py::test_url_non_default_port PASSED +tests/test_web_request.py::test_url_url PASSED +tests/test_web_request.py::test_urlencoded_querystring PASSED tests/test_web_request_handler.py::test_connections PASSED +tests/test_web_request_handler.py::test_repr PASSED tests/test_web_request_handler.py::test_shutdown_no_timeout PASSED tests/test_web_request_handler.py::test_shutdown_timeout PASSED -tests/test_web_response.py::test_stream_response_ctor PASSED -tests/test_web_response.py::test_stream_response_hashable PASSED -tests/test_web_response.py::test_stream_response_eq PASSED -tests/test_web_response.py::test_stream_response_is_mutable_mapping PASSED -tests/test_web_response.py::test_stream_response_delitem PASSED -tests/test_web_response.py::test_stream_response_len PASSED -tests/test_web_response.py::test_request_iter PASSED +tests/test_web_response.py::TestJSONResponse::test_content_type_is_application_json_by_default PASSED +tests/test_web_response.py::TestJSONResponse::test_content_type_is_overrideable PASSED +tests/test_web_response.py::TestJSONResponse::test_data_and_body_raises_value_error PASSED +tests/test_web_response.py::TestJSONResponse::test_data_and_text_raises_value_error PASSED +tests/test_web_response.py::TestJSONResponse::test_passing_text_only PASSED +tests/test_web_response.py::TestJSONResponse::test_text_is_json_encoded PASSED +tests/test_web_response.py::test_304_response_omits_content_length_when_body_unset PASSED +tests/test_web_response.py::test___repr__ PASSED +tests/test_web_response.py::test___repr___after_eof PASSED +tests/test_web_response.py::test___repr___not_prepared PASSED +tests/test_web_response.py::test_assign_nonbyteish_body PASSED +tests/test_web_response.py::test_assign_nonstr_text PASSED +tests/test_web_response.py::test_body_in_ctor_with_content_type_header_multidict PASSED +tests/test_web_response.py::test_cannot_write_after_eof PASSED +tests/test_web_response.py::test_cannot_write_eof_before_headers PASSED +tests/test_web_response.py::test_cannot_write_eof_twice PASSED +tests/test_web_response.py::test_change_content_length_if_compression_enabled PASSED +tests/test_web_response.py::test_change_content_threaded_compression_enabled PASSED +tests/test_web_response.py::test_change_content_threaded_compression_enabled_explicit PASSED +tests/test_web_response.py::test_changing_status_after_prepare_raises PASSED +tests/test_web_response.py::test_charset_without_content_type PASSED +tests/test_web_response.py::test_chunk_size PASSED +tests/test_web_response.py::test_chunked_encoding PASSED +tests/test_web_response.py::test_chunked_encoding_forbidden_for_http_10 PASSED +tests/test_web_response.py::test_compression_default_coding PASSED +tests/test_web_response.py::test_compression_no_accept PASSED +tests/test_web_response.py::test_consecutive_write_eof PASSED tests/test_web_response.py::test_content_length PASSED +tests/test_web_response.py::test_content_length_on_chunked PASSED tests/test_web_response.py::test_content_length_setter PASSED tests/test_web_response.py::test_content_length_setter_with_enable_chunked_encoding PASSED -tests/test_web_response.py::test_drop_content_length_header_on_setting_len_to_None PASSED -tests/test_web_response.py::test_set_content_length_to_None_on_non_set PASSED -tests/test_web_response.py::test_setting_content_type PASSED -tests/test_web_response.py::test_setting_charset PASSED +tests/test_web_response.py::test_content_type_with_set_body PASSED +tests/test_web_response.py::test_content_type_with_set_text PASSED +tests/test_web_response.py::test_cookie_set_after_del PASSED +tests/test_web_response.py::test_ctor_both_charset_param_and_header PASSED +tests/test_web_response.py::test_ctor_both_charset_param_and_header_with_text PASSED +tests/test_web_response.py::test_ctor_both_content_type_param_and_header PASSED +tests/test_web_response.py::test_ctor_both_content_type_param_and_header_with_text PASSED +tests/test_web_response.py::test_ctor_charset PASSED +tests/test_web_response.py::test_ctor_charset_default_utf8 PASSED +tests/test_web_response.py::test_ctor_charset_in_content_type PASSED +tests/test_web_response.py::test_ctor_charset_without_text PASSED +tests/test_web_response.py::test_ctor_content_type PASSED +tests/test_web_response.py::test_ctor_content_type_with_extra PASSED +tests/test_web_response.py::test_ctor_text PASSED +tests/test_web_response.py::test_ctor_text_body_combined PASSED +tests/test_web_response.py::test_ctor_with_headers_and_status PASSED tests/test_web_response.py::test_default_charset PASSED -tests/test_web_response.py::test_reset_charset PASSED -tests/test_web_response.py::test_reset_charset_after_setting PASSED -tests/test_web_response.py::test_charset_without_content_type PASSED -tests/test_web_response.py::test_last_modified_initial PASSED -tests/test_web_response.py::test_last_modified_string PASSED -tests/test_web_response.py::test_last_modified_timestamp PASSED -tests/test_web_response.py::test_last_modified_datetime PASSED -tests/test_web_response.py::test_last_modified_reset PASSED -tests/test_web_response.py::test_last_modified_string_invalid[xxyyzz-None] PASSED -tests/test_web_response.py::test_last_modified_string_invalid[Tue, 08 Oct 4446413 00:56:40 GMT-None] PASSED -tests/test_web_response.py::test_last_modified_string_invalid[Tue, 08 Oct 2000 00:56:80 GMT-None] PASSED -tests/test_web_response.py::test_etag_initial PASSED -tests/test_web_response.py::test_etag_string PASSED +tests/test_web_response.py::test_default_content_type_in_response PASSED +tests/test_web_response.py::test_default_content_type_in_stream_response PASSED +tests/test_web_response.py::test_drain_before_start PASSED +tests/test_web_response.py::test_drop_content_length_header_on_setting_len_to_None PASSED +tests/test_web_response.py::test_enable_chunked_encoding_with_content_length PASSED +tests/test_web_response.py::test_etag_any PASSED tests/test_web_response.py::test_etag_class[etag0-W/"0123-weak-kotik"] PASSED tests/test_web_response.py::test_etag_class[etag1-"0123-strong-kotik"] PASSED -tests/test_web_response.py::test_etag_any PASSED +tests/test_web_response.py::test_etag_initial PASSED +tests/test_web_response.py::test_etag_invalid_value_class[123] PASSED +tests/test_web_response.py::test_etag_invalid_value_class[invalid1] PASSED +tests/test_web_response.py::test_etag_invalid_value_get["\u2200 x \u2209 ascii"] PASSED +tests/test_web_response.py::test_etag_invalid_value_get[forgotten quotes] PASSED tests/test_web_response.py::test_etag_invalid_value_set["invalid"] PASSED tests/test_web_response.py::test_etag_invalid_value_set[\u043f\u043e\u0432\u0438\u043d\u0435\u043d \u0431\u0443\u0442\u0438 ascii] PASSED tests/test_web_response.py::test_etag_invalid_value_set[invalid_value2] PASSED tests/test_web_response.py::test_etag_invalid_value_set[invalid_value3] PASSED -tests/test_web_response.py::test_etag_invalid_value_get[forgotten quotes] PASSED -tests/test_web_response.py::test_etag_invalid_value_get["\u2200 x \u2209 ascii"] PASSED -tests/test_web_response.py::test_etag_invalid_value_class[123] PASSED -tests/test_web_response.py::test_etag_invalid_value_class[invalid1] PASSED tests/test_web_response.py::test_etag_reset PASSED -tests/test_web_response.py::test_start PASSED -tests/test_web_response.py::test_chunked_encoding PASSED -tests/test_web_response.py::test_enable_chunked_encoding_with_content_length PASSED -tests/test_web_response.py::test_chunk_size PASSED -tests/test_web_response.py::test_chunked_encoding_forbidden_for_http_10 PASSED -tests/test_web_response.py::test_compression_no_accept PASSED -tests/test_web_response.py::test_force_compression_no_accept_backwards_compat PASSED -tests/test_web_response.py::test_force_compression_false_backwards_compat PASSED -tests/test_web_response.py::test_compression_default_coding PASSED +tests/test_web_response.py::test_etag_string PASSED +tests/test_web_response.py::test_force_close PASSED tests/test_web_response.py::test_force_compression_deflate PASSED -tests/test_web_response.py::test_force_compression_no_accept_deflate PASSED +tests/test_web_response.py::test_force_compression_deflate_large_payload PASSED +tests/test_web_response.py::test_force_compression_false_backwards_compat PASSED tests/test_web_response.py::test_force_compression_gzip PASSED -tests/test_web_response.py::test_force_compression_no_accept_gzip PASSED -tests/test_web_response.py::test_change_content_threaded_compression_enabled PASSED -tests/test_web_response.py::test_change_content_threaded_compression_enabled_explicit PASSED -tests/test_web_response.py::test_change_content_length_if_compression_enabled PASSED -tests/test_web_response.py::test_set_content_length_if_compression_enabled PASSED -tests/test_web_response.py::test_remove_content_length_if_compression_enabled_http11 PASSED -tests/test_web_response.py::test_remove_content_length_if_compression_enabled_http10 PASSED tests/test_web_response.py::test_force_compression_identity PASSED tests/test_web_response.py::test_force_compression_identity_response PASSED -tests/test_web_response.py::test_rm_content_length_if_compression_http11 PASSED -tests/test_web_response.py::test_rm_content_length_if_compression_http10 PASSED -tests/test_web_response.py::test_rm_content_length_if_204 PASSED -tests/test_web_response.py::test_rm_transfer_encoding_rfc_9112_6_3_http_11[100] PASSED -tests/test_web_response.py::test_rm_transfer_encoding_rfc_9112_6_3_http_11[101] PASSED -tests/test_web_response.py::test_rm_transfer_encoding_rfc_9112_6_3_http_11[204] PASSED -tests/test_web_response.py::test_rm_transfer_encoding_rfc_9112_6_3_http_11[304] PASSED -tests/test_web_response.py::test_rm_content_length_1xx_204_304_responses[100] PASSED -tests/test_web_response.py::test_rm_content_length_1xx_204_304_responses[101] PASSED -tests/test_web_response.py::test_rm_content_length_1xx_204_304_responses[102] PASSED -tests/test_web_response.py::test_rm_content_length_1xx_204_304_responses[204] PASSED -tests/test_web_response.py::test_rm_content_length_1xx_204_304_responses[304] PASSED +tests/test_web_response.py::test_force_compression_no_accept_backwards_compat PASSED +tests/test_web_response.py::test_force_compression_no_accept_deflate PASSED +tests/test_web_response.py::test_force_compression_no_accept_gzip PASSED tests/test_web_response.py::test_head_response_keeps_content_length_of_original_body PASSED tests/test_web_response.py::test_head_response_omits_content_length_when_body_unset PASSED -tests/test_web_response.py::test_304_response_omits_content_length_when_body_unset PASSED -tests/test_web_response.py::test_content_length_on_chunked PASSED -tests/test_web_response.py::test_write_non_byteish PASSED -tests/test_web_response.py::test_write_before_start PASSED -tests/test_web_response.py::test_cannot_write_after_eof PASSED -tests/test_web_response.py::test___repr___after_eof PASSED -tests/test_web_response.py::test_cannot_write_eof_before_headers PASSED -tests/test_web_response.py::test_cannot_write_eof_twice PASSED -tests/test_web_response.py::test_force_close PASSED -tests/test_web_response.py::test_response_output_length PASSED -tests/test_web_response.py::test_response_cookies PASSED -tests/test_web_response.py::test_response_cookie_path PASSED -tests/test_web_response.py::test_response_cookie__issue_del_cookie PASSED -tests/test_web_response.py::test_cookie_set_after_del PASSED -tests/test_web_response.py::test_set_status_with_reason PASSED -tests/test_web_response.py::test_set_status_with_empty_reason PASSED -tests/test_web_response.py::test_start_force_close PASSED -tests/test_web_response.py::test___repr__ PASSED -tests/test_web_response.py::test___repr___not_prepared PASSED +tests/test_web_response.py::test_keep_alive_http09 PASSED tests/test_web_response.py::test_keep_alive_http10_default PASSED tests/test_web_response.py::test_keep_alive_http10_switched_on PASSED -tests/test_web_response.py::test_keep_alive_http09 PASSED -tests/test_web_response.py::test_prepare_twice PASSED -tests/test_web_response.py::test_prepare_calls_signal PASSED -tests/test_web_response.py::test_response_ctor PASSED -tests/test_web_response.py::test_ctor_with_headers_and_status PASSED -tests/test_web_response.py::test_ctor_content_type PASSED -tests/test_web_response.py::test_ctor_text_body_combined PASSED -tests/test_web_response.py::test_ctor_text PASSED -tests/test_web_response.py::test_ctor_charset PASSED -tests/test_web_response.py::test_ctor_charset_default_utf8 PASSED -tests/test_web_response.py::test_ctor_charset_in_content_type PASSED -tests/test_web_response.py::test_ctor_charset_without_text PASSED -tests/test_web_response.py::test_ctor_content_type_with_extra PASSED -tests/test_web_response.py::test_ctor_both_content_type_param_and_header_with_text PASSED -tests/test_web_response.py::test_ctor_both_charset_param_and_header_with_text PASSED -tests/test_web_response.py::test_ctor_both_content_type_param_and_header PASSED -tests/test_web_response.py::test_ctor_both_charset_param_and_header PASSED -tests/test_web_response.py::test_assign_nonbyteish_body PASSED -tests/test_web_response.py::test_assign_nonstr_text PASSED -tests/test_web_response.py::test_payload_body_get_text[test-test] PASSED +tests/test_web_response.py::test_last_modified_datetime PASSED +tests/test_web_response.py::test_last_modified_initial PASSED +tests/test_web_response.py::test_last_modified_reset PASSED +tests/test_web_response.py::test_last_modified_string PASSED +tests/test_web_response.py::test_last_modified_string_invalid[Tue, 08 Oct 2000 00:56:80 GMT-None] PASSED +tests/test_web_response.py::test_last_modified_string_invalid[Tue, 08 Oct 4446413 00:56:40 GMT-None] PASSED +tests/test_web_response.py::test_last_modified_string_invalid[xxyyzz-None] PASSED +tests/test_web_response.py::test_last_modified_timestamp PASSED +tests/test_web_response.py::test_multiline_reason PASSED +tests/test_web_response.py::test_nonstr_text_in_ctor PASSED +tests/test_web_response.py::test_payload_body_get_text[async_iter-None] PASSED tests/test_web_response.py::test_payload_body_get_text[payload1-test] PASSED tests/test_web_response.py::test_payload_body_get_text[payload2-test] PASSED tests/test_web_response.py::test_payload_body_get_text[payload3-test] PASSED tests/test_web_response.py::test_payload_body_get_text[payload4-test] PASSED tests/test_web_response.py::test_payload_body_get_text[payload5-test] PASSED -tests/test_web_response.py::test_payload_body_get_text[async_iter-None] PASSED tests/test_web_response.py::test_payload_body_get_text[payload7-None] PASSED tests/test_web_response.py::test_payload_body_get_text[payload8---x\nContent-Type: text/plain; charset=utf-8\r\nContent-Length: 4\r\n\r\ntest] PASSED +tests/test_web_response.py::test_payload_body_get_text[test-test] PASSED +tests/test_web_response.py::test_prepare_calls_signal PASSED +tests/test_web_response.py::test_prepare_twice PASSED +tests/test_web_response.py::test_prepared_after_eof PASSED +tests/test_web_response.py::test_prepared_when_not_started PASSED +tests/test_web_response.py::test_prepared_when_started PASSED +tests/test_web_response.py::test_remove_content_length_if_compression_enabled_http10 PASSED +tests/test_web_response.py::test_remove_content_length_if_compression_enabled_http11 PASSED +tests/test_web_response.py::test_render_with_body PASSED +tests/test_web_response.py::test_request_iter PASSED +tests/test_web_response.py::test_reset_charset PASSED +tests/test_web_response.py::test_reset_charset_after_setting PASSED +tests/test_web_response.py::test_response_cookie__issue_del_cookie PASSED +tests/test_web_response.py::test_response_cookie_path PASSED +tests/test_web_response.py::test_response_cookies PASSED +tests/test_web_response.py::test_response_ctor PASSED +tests/test_web_response.py::test_response_output_length PASSED +tests/test_web_response.py::test_response_prepared_after_header_preparation PASSED tests/test_web_response.py::test_response_set_content_length PASSED +tests/test_web_response.py::test_response_with_content_length_header_without_body PASSED +tests/test_web_response.py::test_response_with_immutable_headers PASSED +tests/test_web_response.py::test_rm_content_length_1xx_204_304_responses[100] PASSED +tests/test_web_response.py::test_rm_content_length_1xx_204_304_responses[101] PASSED +tests/test_web_response.py::test_rm_content_length_1xx_204_304_responses[102] PASSED +tests/test_web_response.py::test_rm_content_length_1xx_204_304_responses[204] PASSED +tests/test_web_response.py::test_rm_content_length_1xx_204_304_responses[304] PASSED +tests/test_web_response.py::test_rm_content_length_if_204 PASSED +tests/test_web_response.py::test_rm_content_length_if_compression_http10 PASSED +tests/test_web_response.py::test_rm_content_length_if_compression_http11 PASSED +tests/test_web_response.py::test_rm_transfer_encoding_rfc_9112_6_3_http_11[100] PASSED +tests/test_web_response.py::test_rm_transfer_encoding_rfc_9112_6_3_http_11[101] PASSED +tests/test_web_response.py::test_rm_transfer_encoding_rfc_9112_6_3_http_11[204] PASSED +tests/test_web_response.py::test_rm_transfer_encoding_rfc_9112_6_3_http_11[304] PASSED tests/test_web_response.py::test_send_headers_for_empty_body PASSED -tests/test_web_response.py::test_render_with_body PASSED -tests/test_web_response.py::test_multiline_reason PASSED tests/test_web_response.py::test_send_set_cookie_header PASSED -tests/test_web_response.py::test_consecutive_write_eof PASSED -tests/test_web_response.py::test_set_text_with_content_type PASSED +tests/test_web_response.py::test_set_content_length_if_compression_enabled PASSED +tests/test_web_response.py::test_set_content_length_to_None_on_non_set PASSED +tests/test_web_response.py::test_set_status_with_empty_reason PASSED +tests/test_web_response.py::test_set_status_with_reason PASSED tests/test_web_response.py::test_set_text_with_charset PASSED -tests/test_web_response.py::test_default_content_type_in_stream_response PASSED -tests/test_web_response.py::test_default_content_type_in_response PASSED -tests/test_web_response.py::test_content_type_with_set_text PASSED -tests/test_web_response.py::test_content_type_with_set_body PASSED -tests/test_web_response.py::test_prepared_when_not_started PASSED -tests/test_web_response.py::test_prepared_when_started PASSED -tests/test_web_response.py::test_prepared_after_eof PASSED -tests/test_web_response.py::test_drain_before_start PASSED -tests/test_web_response.py::test_changing_status_after_prepare_raises PASSED -tests/test_web_response.py::test_nonstr_text_in_ctor PASSED +tests/test_web_response.py::test_set_text_with_content_type PASSED +tests/test_web_response.py::test_setting_charset PASSED +tests/test_web_response.py::test_setting_content_type PASSED +tests/test_web_response.py::test_start PASSED +tests/test_web_response.py::test_start_force_close PASSED +tests/test_web_response.py::test_stream_response_ctor PASSED +tests/test_web_response.py::test_stream_response_delitem PASSED +tests/test_web_response.py::test_stream_response_eq PASSED +tests/test_web_response.py::test_stream_response_hashable PASSED +tests/test_web_response.py::test_stream_response_is_mutable_mapping PASSED +tests/test_web_response.py::test_stream_response_len PASSED tests/test_web_response.py::test_text_in_ctor_with_content_type PASSED tests/test_web_response.py::test_text_in_ctor_with_content_type_header PASSED tests/test_web_response.py::test_text_in_ctor_with_content_type_header_multidict PASSED -tests/test_web_response.py::test_body_in_ctor_with_content_type_header_multidict PASSED tests/test_web_response.py::test_text_with_empty_payload PASSED -tests/test_web_response.py::test_response_with_content_length_header_without_body PASSED -tests/test_web_response.py::test_response_with_immutable_headers PASSED -tests/test_web_response.py::test_response_prepared_after_header_preparation PASSED -tests/test_web_response.py::TestJSONResponse::test_content_type_is_application_json_by_default PASSED -tests/test_web_response.py::TestJSONResponse::test_passing_text_only PASSED -tests/test_web_response.py::TestJSONResponse::test_data_and_text_raises_value_error PASSED -tests/test_web_response.py::TestJSONResponse::test_data_and_body_raises_value_error PASSED -tests/test_web_response.py::TestJSONResponse::test_text_is_json_encoded PASSED -tests/test_web_response.py::TestJSONResponse::test_content_type_is_overrideable PASSED -tests/test_web_runner.py::test_site_for_nonfrozen_app[pyloop] PASSED +tests/test_web_response.py::test_write_before_start PASSED +tests/test_web_response.py::test_write_non_byteish PASSED +tests/test_web_runner.py::test_addresses[pyloop] PASSED +tests/test_web_runner.py::test_app_handler_args_ceil_threshold[2-2_0] PASSED +tests/test_web_runner.py::test_app_handler_args_ceil_threshold[2-2_1] PASSED +tests/test_web_runner.py::test_app_handler_args_ceil_threshold[None-5] PASSED +tests/test_web_runner.py::test_app_handler_args_failure PASSED +tests/test_web_runner.py::test_app_property[pyloop] PASSED +tests/test_web_runner.py::test_custom_log_format[pyloop] PASSED +tests/test_web_runner.py::test_named_pipe_runner_proactor_loop SKIPPED +tests/test_web_runner.py::test_named_pipe_runner_wrong_loop SKIPPED +tests/test_web_runner.py::test_non_app PASSED +tests/test_web_runner.py::test_run_after_asyncio_run PASSED tests/test_web_runner.py::test_runner_setup_handle_signals[pyloop] PASSED tests/test_web_runner.py::test_runner_setup_without_signal_handling[pyloop] PASSED tests/test_web_runner.py::test_site_double_added[pyloop] PASSED +tests/test_web_runner.py::test_site_for_nonfrozen_app[pyloop] PASSED tests/test_web_runner.py::test_site_stop_not_started[pyloop] PASSED -tests/test_web_runner.py::test_custom_log_format[pyloop] PASSED -tests/test_web_runner.py::test_unreg_site[pyloop] PASSED -tests/test_web_runner.py::test_app_property[pyloop] PASSED -tests/test_web_runner.py::test_non_app PASSED -tests/test_web_runner.py::test_addresses[pyloop] PASSED -tests/test_web_runner.py::test_named_pipe_runner_wrong_loop SKIPPED -tests/test_web_runner.py::test_named_pipe_runner_proactor_loop SKIPPED tests/test_web_runner.py::test_tcpsite_default_host[pyloop] PASSED tests/test_web_runner.py::test_tcpsite_empty_str_host[pyloop] PASSED -tests/test_web_runner.py::test_run_after_asyncio_run PASSED -tests/test_web_runner.py::test_app_handler_args_failure PASSED -tests/test_web_runner.py::test_app_handler_args_ceil_threshold[2-2_0] PASSED -tests/test_web_runner.py::test_app_handler_args_ceil_threshold[None-5] PASSED -tests/test_web_runner.py::test_app_handler_args_ceil_threshold[2-2_1] PASSED -tests/test_web_sendfile.py::test_using_gzip_if_header_present_and_file_available[pyloop] PASSED +tests/test_web_runner.py::test_unreg_site[pyloop] PASSED tests/test_web_sendfile.py::test_gzip_if_header_not_present_and_file_available[pyloop] PASSED tests/test_web_sendfile.py::test_gzip_if_header_not_present_and_file_not_available[pyloop] PASSED -tests/test_web_sendfile.py::test_gzip_if_header_present_and_file_not_available[pyloop] PASSED -tests/test_web_sendfile.py::test_status_controlled_by_user[pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_ok[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_ok[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_zero_bytes_file_ok[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_zero_bytes_file_ok[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_zero_bytes_file_mocked_native_sendfile[pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_ok_string_path[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_ok_string_path[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_not_exists[pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_name_too_long[pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_upper_directory[pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_content_type[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_content_type[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_custom_content_type[sendfile-pyloop-gzip] PASSED +tests/test_web_sendfile.py::test_gzip_if_header_present_and_file_not_available[pyloop] PASSED +tests/test_web_sendfile.py::test_status_controlled_by_user[pyloop] PASSED +tests/test_web_sendfile.py::test_using_gzip_if_header_present_and_file_available[pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_compression[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_compression[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_custom_content_type[no_sendfile-pyloop-br] PASSED tests/test_web_sendfile_functional.py::test_static_file_custom_content_type[no_sendfile-pyloop-gzip] PASSED tests/test_web_sendfile_functional.py::test_static_file_custom_content_type[sendfile-pyloop-br] PASSED -tests/test_web_sendfile_functional.py::test_static_file_custom_content_type[no_sendfile-pyloop-br] PASSED -tests/test_web_sendfile_functional.py::test_static_file_custom_content_type_compress[sendfile-pyloop-gzip, deflate-gzip] PASSED -tests/test_web_sendfile_functional.py::test_static_file_custom_content_type_compress[sendfile-pyloop-gzip, deflate, br-br] PASSED -tests/test_web_sendfile_functional.py::test_static_file_custom_content_type_compress[no_sendfile-pyloop-gzip, deflate-gzip] PASSED +tests/test_web_sendfile_functional.py::test_static_file_custom_content_type[sendfile-pyloop-gzip] PASSED tests/test_web_sendfile_functional.py::test_static_file_custom_content_type_compress[no_sendfile-pyloop-gzip, deflate, br-br] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[sendfile-pyloop-None-gzip, deflate-gzip] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[sendfile-pyloop-None-gzip, deflate, br-br] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[sendfile-pyloop-ContentCoding.gzip-gzip, deflate-gzip] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[sendfile-pyloop-ContentCoding.gzip-gzip, deflate, br-br] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[no_sendfile-pyloop-None-gzip, deflate-gzip] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[no_sendfile-pyloop-None-gzip, deflate, br-br] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[no_sendfile-pyloop-ContentCoding.gzip-gzip, deflate-gzip] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[no_sendfile-pyloop-ContentCoding.gzip-gzip, deflate, br-br] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[sendfile-pyloop-gzip-application/gzip] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[sendfile-pyloop-br-application/x-brotli] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[sendfile-pyloop-bzip2-application/x-bzip2] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[no_sendfile-pyloop-gzip-application/gzip] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[no_sendfile-pyloop-br-application/x-brotli] PASSED -tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[no_sendfile-pyloop-bzip2-application/x-bzip2] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_modified_since[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_modified_since[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_past_date[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_past_date[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_invalid_date[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_invalid_date[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_future_date[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_future_date[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_match[sendfile-pyloop-] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_match[sendfile-pyloop-Fri, 31 Dec 0000 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_match[no_sendfile-pyloop-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_custom_content_type_compress[no_sendfile-pyloop-gzip, deflate-gzip] PASSED +tests/test_web_sendfile_functional.py::test_static_file_custom_content_type_compress[sendfile-pyloop-gzip, deflate, br-br] PASSED +tests/test_web_sendfile_functional.py::test_static_file_custom_content_type_compress[sendfile-pyloop-gzip, deflate-gzip] PASSED +tests/test_web_sendfile_functional.py::test_static_file_directory_traversal_attack[pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_huge[pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_huge_cancel[pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_huge_error[pyloop] PASSED tests/test_web_sendfile_functional.py::test_static_file_if_match[no_sendfile-pyloop-Fri, 31 Dec 0000 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[sendfile-pyloop-etags0-200-] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[sendfile-pyloop-etags0-200-Fri, 31 Dec 0000 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[sendfile-pyloop-etags1-412-] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[sendfile-pyloop-etags1-412-Fri, 31 Dec 0000 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[no_sendfile-pyloop-etags0-200-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_match[no_sendfile-pyloop-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_match[sendfile-pyloop-Fri, 31 Dec 0000 23:59:59 GMT] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_match[sendfile-pyloop-] PASSED tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[no_sendfile-pyloop-etags0-200-Fri, 31 Dec 0000 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[no_sendfile-pyloop-etags1-412-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[no_sendfile-pyloop-etags0-200-] PASSED tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[no_sendfile-pyloop-etags1-412-Fri, 31 Dec 0000 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_none_match[sendfile-pyloop-additional_etags0-] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_none_match[sendfile-pyloop-additional_etags0-Fri, 31 Dec 9999 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_none_match[sendfile-pyloop-additional_etags1-] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_none_match[sendfile-pyloop-additional_etags1-Fri, 31 Dec 9999 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_none_match[no_sendfile-pyloop-additional_etags0-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[no_sendfile-pyloop-etags1-412-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[sendfile-pyloop-etags0-200-Fri, 31 Dec 0000 23:59:59 GMT] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[sendfile-pyloop-etags0-200-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[sendfile-pyloop-etags1-412-Fri, 31 Dec 0000 23:59:59 GMT] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_match_custom_tags[sendfile-pyloop-etags1-412-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_modified_since[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_modified_since[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_future_date[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_future_date[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_invalid_date[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_invalid_date[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_past_date[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_modified_since_past_date[sendfile-pyloop] PASSED tests/test_web_sendfile_functional.py::test_static_file_if_none_match[no_sendfile-pyloop-additional_etags0-Fri, 31 Dec 9999 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_none_match[no_sendfile-pyloop-additional_etags1-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_none_match[no_sendfile-pyloop-additional_etags0-] PASSED tests/test_web_sendfile_functional.py::test_static_file_if_none_match[no_sendfile-pyloop-additional_etags1-Fri, 31 Dec 9999 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_none_match_star[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_none_match[no_sendfile-pyloop-additional_etags1-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_none_match[sendfile-pyloop-additional_etags0-Fri, 31 Dec 9999 23:59:59 GMT] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_none_match[sendfile-pyloop-additional_etags0-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_none_match[sendfile-pyloop-additional_etags1-Fri, 31 Dec 9999 23:59:59 GMT] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_none_match[sendfile-pyloop-additional_etags1-] PASSED tests/test_web_sendfile_functional.py::test_static_file_if_none_match_star[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_none_match_weak[sendfile-pyloop-] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_none_match_weak[sendfile-pyloop-Fri, 31 Dec 9999 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_none_match_weak[no_sendfile-pyloop-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_none_match_star[sendfile-pyloop] PASSED tests/test_web_sendfile_functional.py::test_static_file_if_none_match_weak[no_sendfile-pyloop-Fri, 31 Dec 9999 23:59:59 GMT] PASSED -tests/test_web_sendfile_functional.py::test_static_file_ssl[pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_directory_traversal_attack[pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_huge[pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_range[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_range[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_range_end_bigger_than_size[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_range_end_bigger_than_size[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_range_beyond_eof[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_range_beyond_eof[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_range_tail[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_range_tail[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_invalid_range[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_invalid_range[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_past_with_range[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_past_with_range[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_future_with_range[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_future_with_range[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_range_past_with_range[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_range_past_with_range[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_range_future_with_range[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_none_match_weak[no_sendfile-pyloop-] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_none_match_weak[sendfile-pyloop-Fri, 31 Dec 9999 23:59:59 GMT] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_none_match_weak[sendfile-pyloop-] PASSED tests/test_web_sendfile_functional.py::test_static_file_if_range_future_with_range[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_past_without_range[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_past_without_range[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_future_without_range[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_future_without_range[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_range_past_without_range[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_range_past_without_range[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_range_future_without_range[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_range_future_with_range[sendfile-pyloop] PASSED tests/test_web_sendfile_functional.py::test_static_file_if_range_future_without_range[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_invalid_date[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_invalid_date[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_if_range_invalid_date[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_range_future_without_range[sendfile-pyloop] PASSED tests/test_web_sendfile_functional.py::test_static_file_if_range_invalid_date[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_compression[sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_compression[no_sendfile-pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_huge_cancel[pyloop] PASSED -tests/test_web_sendfile_functional.py::test_static_file_huge_error[pyloop] PASSED -tests/test_web_server.py::test_simple_server[pyloop] PASSED -tests/test_web_server.py::test_unsupported_upgrade[pyloop] PASSED -tests/test_web_server.py::test_raw_server_not_http_exception[pyloop] PASSED -tests/test_web_server.py::test_raw_server_handler_timeout[pyloop] PASSED -tests/test_web_server.py::test_raw_server_do_not_swallow_exceptions[pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_range_invalid_date[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_range_past_with_range[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_range_past_with_range[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_range_past_without_range[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_range_past_without_range[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_future_with_range[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_future_with_range[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_future_without_range[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_future_without_range[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_invalid_date[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_invalid_date[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_past_with_range[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_past_with_range[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_past_without_range[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_if_unmodified_since_past_without_range[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_invalid_range[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_invalid_range[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_name_too_long[pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_not_exists[pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_ok[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_ok[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_ok_string_path[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_ok_string_path[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_range[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_range[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_range_beyond_eof[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_range_beyond_eof[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_range_end_bigger_than_size[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_range_end_bigger_than_size[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_range_tail[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_range_tail[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_ssl[pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_upper_directory[pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[no_sendfile-pyloop-br-application/x-brotli] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[no_sendfile-pyloop-bzip2-application/x-bzip2] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[no_sendfile-pyloop-gzip-application/gzip] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[sendfile-pyloop-br-application/x-brotli] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[sendfile-pyloop-bzip2-application/x-bzip2] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_content_encoding[sendfile-pyloop-gzip-application/gzip] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_content_type[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_content_type[sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[no_sendfile-pyloop-ContentCoding.gzip-gzip, deflate, br-br] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[no_sendfile-pyloop-ContentCoding.gzip-gzip, deflate-gzip] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[no_sendfile-pyloop-None-gzip, deflate, br-br] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[no_sendfile-pyloop-None-gzip, deflate-gzip] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[sendfile-pyloop-ContentCoding.gzip-gzip, deflate, br-br] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[sendfile-pyloop-ContentCoding.gzip-gzip, deflate-gzip] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[sendfile-pyloop-None-gzip, deflate, br-br] PASSED +tests/test_web_sendfile_functional.py::test_static_file_with_encoding_and_enable_compression[sendfile-pyloop-None-gzip, deflate-gzip] PASSED +tests/test_web_sendfile_functional.py::test_zero_bytes_file_mocked_native_sendfile[pyloop] PASSED +tests/test_web_sendfile_functional.py::test_zero_bytes_file_ok[no_sendfile-pyloop] PASSED +tests/test_web_sendfile_functional.py::test_zero_bytes_file_ok[sendfile-pyloop] PASSED +tests/test_web_server.py::test_handler_cancellation PASSED +tests/test_web_server.py::test_no_handler_cancellation PASSED tests/test_web_server.py::test_raw_server_cancelled_in_write_eof[pyloop] PASSED -tests/test_web_server.py::test_raw_server_not_http_exception_debug[pyloop] PASSED +tests/test_web_server.py::test_raw_server_do_not_swallow_exceptions[pyloop] PASSED +tests/test_web_server.py::test_raw_server_handler_timeout[pyloop] PASSED tests/test_web_server.py::test_raw_server_html_exception[pyloop] PASSED tests/test_web_server.py::test_raw_server_html_exception_debug[pyloop] PASSED -tests/test_web_server.py::test_handler_cancellation PASSED -tests/test_web_server.py::test_no_handler_cancellation PASSED -tests/test_web_urldispatcher.py::test_access_root_of_static_handler[pyloop-index_forbidden] PASSED +tests/test_web_server.py::test_raw_server_not_http_exception[pyloop] PASSED +tests/test_web_server.py::test_raw_server_not_http_exception_debug[pyloop] PASSED +tests/test_web_server.py::test_simple_server[pyloop] PASSED +tests/test_web_server.py::test_unsupported_upgrade[pyloop] PASSED +tests/test_web_urldispatcher.py::test_412_is_returned[pyloop] PASSED +tests/test_web_urldispatcher.py::test_access_compressed_file_as_symlink[pyloop] PASSED +tests/test_web_urldispatcher.py::test_access_mock_special_resource[pyloop] PASSED +tests/test_web_urldispatcher.py::test_access_non_existing_resource[pyloop] PASSED tests/test_web_urldispatcher.py::test_access_root_of_static_handler[pyloop-True-200-/-/-\n\nIndex of /.\n\n\n

Index of /.

\n\n\n] PASSED +tests/test_web_urldispatcher.py::test_access_root_of_static_handler[pyloop-index_forbidden] PASSED tests/test_web_urldispatcher.py::test_access_root_of_static_handler[pyloop-index_static] PASSED tests/test_web_urldispatcher.py::test_access_root_of_static_handler[pyloop-index_subdir] PASSED -tests/test_web_urldispatcher.py::test_access_root_of_static_handler_xss[pyloop-index_forbidden] SKIPPED tests/test_web_urldispatcher.py::test_access_root_of_static_handler_xss[pyloop-True-200-/-/-\n\nIndex of /.\n\n\n

Index of /.

\n\n\n] SKIPPED +tests/test_web_urldispatcher.py::test_access_root_of_static_handler_xss[pyloop-index_forbidden] SKIPPED tests/test_web_urldispatcher.py::test_access_root_of_static_handler_xss[pyloop-index_static] SKIPPED tests/test_web_urldispatcher.py::test_access_root_of_static_handler_xss[pyloop-index_subdir] SKIPPED +tests/test_web_urldispatcher.py::test_access_special_resource[pyloop] PASSED +tests/test_web_urldispatcher.py::test_access_symlink_loop[pyloop] PASSED +tests/test_web_urldispatcher.py::test_access_to_the_file_with_spaces[pyloop--test file.txt-test text] PASSED +tests/test_web_urldispatcher.py::test_access_to_the_file_with_spaces[pyloop-test dir name-test dir file .txt-test text file folder] PASSED +tests/test_web_urldispatcher.py::test_add_view[pyloop] PASSED +tests/test_web_urldispatcher.py::test_allow_head[pyloop] PASSED +tests/test_web_urldispatcher.py::test_decoded_raw_match_regex[pyloop] PASSED +tests/test_web_urldispatcher.py::test_decoded_url_match[pyloop-/1%2C3/hello-/1%2C3/hello-404] PASSED +tests/test_web_urldispatcher.py::test_decoded_url_match[pyloop-/467,802,24834/hello-/467%2C802%2C24834/hello-200] PASSED +tests/test_web_urldispatcher.py::test_decoded_url_match[pyloop-/467,802,24834/hello-/467,802,24834/hello-200] PASSED +tests/test_web_urldispatcher.py::test_decoded_url_match[pyloop-/{user_ids:([0-9]+)(,([0-9]+))*}/hello-/467%2C802%2C24834/hello-200] PASSED +tests/test_web_urldispatcher.py::test_decoded_url_match[pyloop-/{user_ids:([0-9]+)(,([0-9]+))*}/hello-/467,802,24834/hello-200] PASSED +tests/test_web_urldispatcher.py::test_decorate_view[pyloop] PASSED tests/test_web_urldispatcher.py::test_follow_symlink[pyloop] PASSED tests/test_web_urldispatcher.py::test_follow_symlink_directory_traversal[pyloop] PASSED tests/test_web_urldispatcher.py::test_follow_symlink_directory_traversal_after_normalization[pyloop] PASSED -tests/test_web_urldispatcher.py::test_access_to_the_file_with_spaces[pyloop--test file.txt-test text] PASSED -tests/test_web_urldispatcher.py::test_access_to_the_file_with_spaces[pyloop-test dir name-test dir file .txt-test text file folder] PASSED -tests/test_web_urldispatcher.py::test_access_non_existing_resource[pyloop] PASSED -tests/test_web_urldispatcher.py::test_url_escaping[pyloop-/a:b-/a:b] PASSED -tests/test_web_urldispatcher.py::test_url_escaping[pyloop-/a@b-/a@b] PASSED -tests/test_web_urldispatcher.py::test_url_escaping[pyloop-/a:b-/a%3Ab] PASSED +tests/test_web_urldispatcher.py::test_for_issue_5250[pyloop] PASSED tests/test_web_urldispatcher.py::test_handler_metadata_persistence PASSED -tests/test_web_urldispatcher.py::test_static_directory_without_read_permission[pyloop-] PASSED -tests/test_web_urldispatcher.py::test_static_directory_without_read_permission[pyloop-my_file.txt] PASSED -tests/test_web_urldispatcher.py::test_static_directory_with_mock_permission_error[pyloop-] PASSED -tests/test_web_urldispatcher.py::test_static_directory_with_mock_permission_error[pyloop-my_file.txt] PASSED -tests/test_web_urldispatcher.py::test_static_file_without_read_permission[pyloop] PASSED -tests/test_web_urldispatcher.py::test_static_file_with_mock_permission_error[pyloop] PASSED -tests/test_web_urldispatcher.py::test_access_symlink_loop[pyloop] PASSED -tests/test_web_urldispatcher.py::test_access_compressed_file_as_symlink[pyloop] PASSED -tests/test_web_urldispatcher.py::test_access_special_resource[pyloop] PASSED -tests/test_web_urldispatcher.py::test_access_mock_special_resource[pyloop] PASSED +tests/test_web_urldispatcher.py::test_order_is_preserved[pyloop] PASSED tests/test_web_urldispatcher.py::test_partially_applied_handler[pyloop] PASSED -tests/test_web_urldispatcher.py::test_static_head[pyloop] PASSED -tests/test_web_urldispatcher.py::test_system_route PASSED -tests/test_web_urldispatcher.py::test_412_is_returned[pyloop] PASSED -tests/test_web_urldispatcher.py::test_allow_head[pyloop] PASSED +tests/test_web_urldispatcher.py::test_resource_raw_match PASSED tests/test_web_urldispatcher.py::test_reuse_last_added_resource[/a] PASSED -tests/test_web_urldispatcher.py::test_reuse_last_added_resource[/{a}] PASSED tests/test_web_urldispatcher.py::test_reuse_last_added_resource[/{a:.*}] PASSED -tests/test_web_urldispatcher.py::test_resource_raw_match PASSED -tests/test_web_urldispatcher.py::test_add_view[pyloop] PASSED -tests/test_web_urldispatcher.py::test_decorate_view[pyloop] PASSED -tests/test_web_urldispatcher.py::test_web_view[pyloop] PASSED +tests/test_web_urldispatcher.py::test_reuse_last_added_resource[/{a}] PASSED +tests/test_web_urldispatcher.py::test_route_with_regex[pyloop] PASSED tests/test_web_urldispatcher.py::test_static_absolute_url[pyloop] PASSED -tests/test_web_urldispatcher.py::test_for_issue_5250[pyloop] PASSED -tests/test_web_urldispatcher.py::test_decoded_url_match[pyloop-/467,802,24834/hello-/467%2C802%2C24834/hello-200] PASSED -tests/test_web_urldispatcher.py::test_decoded_url_match[pyloop-/{user_ids:([0-9]+)(,([0-9]+))*}/hello-/467%2C802%2C24834/hello-200] PASSED -tests/test_web_urldispatcher.py::test_decoded_url_match[pyloop-/467,802,24834/hello-/467,802,24834/hello-200] PASSED -tests/test_web_urldispatcher.py::test_decoded_url_match[pyloop-/{user_ids:([0-9]+)(,([0-9]+))*}/hello-/467,802,24834/hello-200] PASSED -tests/test_web_urldispatcher.py::test_decoded_url_match[pyloop-/1%2C3/hello-/1%2C3/hello-404] PASSED -tests/test_web_urldispatcher.py::test_decoded_raw_match_regex[pyloop] PASSED -tests/test_web_urldispatcher.py::test_order_is_preserved[pyloop] PASSED +tests/test_web_urldispatcher.py::test_static_directory_with_mock_permission_error[pyloop-] PASSED +tests/test_web_urldispatcher.py::test_static_directory_with_mock_permission_error[pyloop-my_file.txt] PASSED +tests/test_web_urldispatcher.py::test_static_directory_without_read_permission[pyloop-] PASSED +tests/test_web_urldispatcher.py::test_static_directory_without_read_permission[pyloop-my_file.txt] PASSED +tests/test_web_urldispatcher.py::test_static_file_with_mock_permission_error[pyloop] PASSED +tests/test_web_urldispatcher.py::test_static_file_without_read_permission[pyloop] PASSED +tests/test_web_urldispatcher.py::test_static_head[pyloop] PASSED +tests/test_web_urldispatcher.py::test_system_route PASSED +tests/test_web_urldispatcher.py::test_url_escaping[pyloop-/a:b-/a%3Ab] PASSED +tests/test_web_urldispatcher.py::test_url_escaping[pyloop-/a:b-/a:b] PASSED +tests/test_web_urldispatcher.py::test_url_escaping[pyloop-/a@b-/a@b] PASSED tests/test_web_urldispatcher.py::test_url_with_many_slashes[pyloop] PASSED -tests/test_web_urldispatcher.py::test_route_with_regex[pyloop] PASSED -tests/test_web_websocket.py::test_nonstarted_ping PASSED -tests/test_web_websocket.py::test_nonstarted_pong PASSED -tests/test_web_websocket.py::test_nonstarted_send_str PASSED -tests/test_web_websocket.py::test_nonstarted_send_bytes PASSED -tests/test_web_websocket.py::test_nonstarted_send_json PASSED -tests/test_web_websocket.py::test_nonstarted_close PASSED -tests/test_web_websocket.py::test_nonstarted_receive_str PASSED -tests/test_web_websocket.py::test_nonstarted_receive_bytes PASSED -tests/test_web_websocket.py::test_nonstarted_receive_json PASSED -tests/test_web_websocket.py::test_receive_str_nonstring[pyloop] PASSED -tests/test_web_websocket.py::test_receive_bytes_nonsbytes[pyloop] PASSED -tests/test_web_websocket.py::test_send_str_nonstring[pyloop] PASSED -tests/test_web_websocket.py::test_send_bytes_nonbytes[pyloop] PASSED -tests/test_web_websocket.py::test_send_json_nonjson[pyloop] PASSED -tests/test_web_websocket.py::test_write_non_prepared PASSED -tests/test_web_websocket.py::test_heartbeat_timeout[pyloop] PASSED -tests/test_web_websocket.py::test_websocket_ready PASSED -tests/test_web_websocket.py::test_websocket_not_ready PASSED -tests/test_web_websocket.py::test_websocket_ready_unknown_protocol PASSED -tests/test_web_websocket.py::test_bool_websocket_ready PASSED +tests/test_web_urldispatcher.py::test_web_view[pyloop] PASSED tests/test_web_websocket.py::test_bool_websocket_not_ready PASSED +tests/test_web_websocket.py::test_bool_websocket_ready PASSED tests/test_web_websocket.py::test_can_prepare_ok[pyloop] PASSED +tests/test_web_websocket.py::test_can_prepare_started[pyloop] PASSED tests/test_web_websocket.py::test_can_prepare_unknown_protocol[pyloop] PASSED tests/test_web_websocket.py::test_can_prepare_without_upgrade[pyloop] PASSED -tests/test_web_websocket.py::test_can_prepare_started[pyloop] PASSED +tests/test_web_websocket.py::test_close_after_closing[pyloop] PASSED +tests/test_web_websocket.py::test_close_exc[pyloop] PASSED +tests/test_web_websocket.py::test_close_idempotent[pyloop] PASSED tests/test_web_websocket.py::test_closed_after_ctor PASSED -tests/test_web_websocket.py::test_send_str_closed[pyloop] PASSED -tests/test_web_websocket.py::test_send_bytes_closed[pyloop] PASSED -tests/test_web_websocket.py::test_send_json_closed[pyloop] PASSED +tests/test_web_websocket.py::test_concurrent_receive[pyloop] PASSED +tests/test_web_websocket.py::test_get_extra_info[pyloop-None-default] PASSED +tests/test_web_websocket.py::test_get_extra_info[pyloop-ws_transport0-existent] PASSED +tests/test_web_websocket.py::test_get_extra_info[pyloop-ws_transport2-default] PASSED +tests/test_web_websocket.py::test_heartbeat_timeout[pyloop] PASSED +tests/test_web_websocket.py::test_multiple_receive_on_close_connection[pyloop] PASSED +tests/test_web_websocket.py::test_no_transfer_encoding_header[pyloop] PASSED +tests/test_web_websocket.py::test_nonstarted_close PASSED +tests/test_web_websocket.py::test_nonstarted_ping PASSED +tests/test_web_websocket.py::test_nonstarted_pong PASSED +tests/test_web_websocket.py::test_nonstarted_receive_bytes PASSED +tests/test_web_websocket.py::test_nonstarted_receive_json PASSED +tests/test_web_websocket.py::test_nonstarted_receive_str PASSED +tests/test_web_websocket.py::test_nonstarted_send_bytes PASSED +tests/test_web_websocket.py::test_nonstarted_send_frame PASSED +tests/test_web_websocket.py::test_nonstarted_send_json PASSED +tests/test_web_websocket.py::test_nonstarted_send_str PASSED tests/test_web_websocket.py::test_ping_closed[pyloop] PASSED tests/test_web_websocket.py::test_pong_closed[pyloop] PASSED -tests/test_web_websocket.py::test_close_idempotent[pyloop] PASSED tests/test_web_websocket.py::test_prepare_post_method_ok[pyloop] PASSED +tests/test_web_websocket.py::test_prepare_twice_idempotent[pyloop] PASSED tests/test_web_websocket.py::test_prepare_without_upgrade[pyloop] PASSED -tests/test_web_websocket.py::test_wait_closed_before_start PASSED -tests/test_web_websocket.py::test_write_eof_not_started PASSED -tests/test_web_websocket.py::test_write_eof_idempotent[pyloop] PASSED -tests/test_web_websocket.py::test_receive_eofstream_in_reader[pyloop] PASSED -tests/test_web_websocket.py::test_receive_exception_in_reader[pyloop] PASSED +tests/test_web_websocket.py::test_raise_writer_limit[pyloop] PASSED +tests/test_web_websocket.py::test_receive_bytes_nonsbytes[pyloop] PASSED tests/test_web_websocket.py::test_receive_close_but_left_open[pyloop] PASSED tests/test_web_websocket.py::test_receive_closing[pyloop] PASSED -tests/test_web_websocket.py::test_close_after_closing[pyloop] PASSED +tests/test_web_websocket.py::test_receive_eofstream_in_reader[pyloop] PASSED +tests/test_web_websocket.py::test_receive_exception_in_reader[pyloop] PASSED +tests/test_web_websocket.py::test_receive_str_nonstring[pyloop] PASSED tests/test_web_websocket.py::test_receive_timeouterror[pyloop] PASSED -tests/test_web_websocket.py::test_multiple_receive_on_close_connection[pyloop] PASSED -tests/test_web_websocket.py::test_concurrent_receive[pyloop] PASSED -tests/test_web_websocket.py::test_close_exc[pyloop] PASSED -tests/test_web_websocket.py::test_prepare_twice_idempotent[pyloop] PASSED +tests/test_web_websocket.py::test_recv_bytes_closed[pyloop] PASSED +tests/test_web_websocket.py::test_recv_str_closed[pyloop] PASSED +tests/test_web_websocket.py::test_send_bytes_closed[pyloop] PASSED +tests/test_web_websocket.py::test_send_bytes_nonbytes[pyloop] PASSED +tests/test_web_websocket.py::test_send_frame_closed[pyloop] PASSED +tests/test_web_websocket.py::test_send_json_closed[pyloop] PASSED +tests/test_web_websocket.py::test_send_json_nonjson[pyloop] PASSED +tests/test_web_websocket.py::test_send_str_closed[pyloop] PASSED +tests/test_web_websocket.py::test_send_str_nonstring[pyloop] PASSED tests/test_web_websocket.py::test_send_with_per_message_deflate[pyloop] PASSED -tests/test_web_websocket.py::test_no_transfer_encoding_header[pyloop] PASSED -tests/test_web_websocket.py::test_get_extra_info[pyloop-ws_transport0-existent] PASSED -tests/test_web_websocket.py::test_get_extra_info[pyloop-None-default] PASSED -tests/test_web_websocket.py::test_get_extra_info[pyloop-ws_transport2-default] PASSED -tests/test_web_websocket_functional.py::test_websocket_can_prepare[pyloop] PASSED -tests/test_web_websocket_functional.py::test_websocket_json[pyloop] PASSED -tests/test_web_websocket_functional.py::test_websocket_json_invalid_message[pyloop] PASSED -tests/test_web_websocket_functional.py::test_websocket_send_json[pyloop] PASSED -tests/test_web_websocket_functional.py::test_websocket_receive_json[pyloop] PASSED -tests/test_web_websocket_functional.py::test_send_recv_text[pyloop] PASSED -tests/test_web_websocket_functional.py::test_send_recv_bytes[pyloop] PASSED -tests/test_web_websocket_functional.py::test_send_recv_json[pyloop] PASSED +tests/test_web_websocket.py::test_wait_closed_before_start PASSED +tests/test_web_websocket.py::test_websocket_not_ready PASSED +tests/test_web_websocket.py::test_websocket_ready PASSED +tests/test_web_websocket.py::test_websocket_ready_unknown_protocol PASSED +tests/test_web_websocket.py::test_write_eof_idempotent[pyloop] PASSED +tests/test_web_websocket.py::test_write_eof_not_started PASSED +tests/test_web_websocket.py::test_write_non_prepared PASSED +tests/test_web_websocket_functional.py::test_abnormal_closure_when_client_does_not_close[pyloop] PASSED +tests/test_web_websocket_functional.py::test_abnormal_closure_when_server_does_not_receive[pyloop] PASSED +tests/test_web_websocket_functional.py::test_auto_pong_with_closing_by_peer[pyloop] PASSED +tests/test_web_websocket_functional.py::test_bug3380[pyloop] PASSED +tests/test_web_websocket_functional.py::test_change_status[pyloop] PASSED +tests/test_web_websocket_functional.py::test_close_op_code_from_client[pyloop] PASSED tests/test_web_websocket_functional.py::test_close_timeout[pyloop] PASSED +tests/test_web_websocket_functional.py::test_closed_async_for[pyloop] PASSED tests/test_web_websocket_functional.py::test_concurrent_close[pyloop] PASSED tests/test_web_websocket_functional.py::test_concurrent_close_multiple_tasks[pyloop] PASSED -tests/test_web_websocket_functional.py::test_close_op_code_from_client[pyloop] PASSED -tests/test_web_websocket_functional.py::test_auto_pong_with_closing_by_peer[pyloop] PASSED -tests/test_web_websocket_functional.py::test_ping[pyloop] PASSED -tests/test_web_websocket_functional.py::test_pong[pyloop] PASSED -tests/test_web_websocket_functional.py::test_change_status[pyloop] PASSED -tests/test_web_websocket_functional.py::test_handle_protocol[pyloop] PASSED -tests/test_web_websocket_functional.py::test_server_close_handshake[pyloop] PASSED -tests/test_web_websocket_functional.py::test_server_close_handshake_server_eats_client_messages[pyloop] PASSED -tests/test_web_websocket_functional.py::test_receive_timeout[pyloop] PASSED tests/test_web_websocket_functional.py::test_custom_receive_timeout[pyloop] PASSED +tests/test_web_websocket_functional.py::test_handle_protocol[pyloop] PASSED tests/test_web_websocket_functional.py::test_heartbeat[pyloop] PASSED -tests/test_web_websocket_functional.py::test_heartbeat_no_pong[pyloop] PASSED tests/test_web_websocket_functional.py::test_heartbeat_connection_closed[pyloop] PASSED tests/test_web_websocket_functional.py::test_heartbeat_failure_ends_receive[pyloop] PASSED -tests/test_web_websocket_functional.py::test_heartbeat_no_pong_send_many_messages[pyloop] PASSED +tests/test_web_websocket_functional.py::test_heartbeat_no_pong[pyloop] PASSED tests/test_web_websocket_functional.py::test_heartbeat_no_pong_receive_many_messages[pyloop] PASSED -tests/test_web_websocket_functional.py::test_server_ws_async_for[pyloop] PASSED -tests/test_web_websocket_functional.py::test_closed_async_for[pyloop] PASSED -tests/test_web_websocket_functional.py::test_websocket_disable_keepalive[pyloop] PASSED -tests/test_web_websocket_functional.py::test_bug3380[pyloop] PASSED +tests/test_web_websocket_functional.py::test_heartbeat_no_pong_send_many_messages[pyloop] PASSED +tests/test_web_websocket_functional.py::test_normal_closure_while_client_sends_msg[pyloop] PASSED +tests/test_web_websocket_functional.py::test_ping[pyloop] PASSED +tests/test_web_websocket_functional.py::test_pong[pyloop] PASSED tests/test_web_websocket_functional.py::test_receive_being_cancelled_keeps_connection_open[pyloop] PASSED +tests/test_web_websocket_functional.py::test_receive_bytes_nonbytes[pyloop] PASSED +tests/test_web_websocket_functional.py::test_receive_str_nonstring[pyloop] PASSED +tests/test_web_websocket_functional.py::test_receive_timeout[pyloop] PASSED tests/test_web_websocket_functional.py::test_receive_timeout_keeps_connection_open[pyloop] PASSED +tests/test_web_websocket_functional.py::test_send_recv_bytes[pyloop] PASSED +tests/test_web_websocket_functional.py::test_send_recv_json[pyloop] PASSED +tests/test_web_websocket_functional.py::test_send_recv_text[pyloop] PASSED +tests/test_web_websocket_functional.py::test_server_close_handshake[pyloop] PASSED +tests/test_web_websocket_functional.py::test_server_close_handshake_server_eats_client_messages[pyloop] PASSED +tests/test_web_websocket_functional.py::test_server_ws_async_for[pyloop] PASSED +tests/test_web_websocket_functional.py::test_websocket_can_prepare[pyloop] PASSED +tests/test_web_websocket_functional.py::test_websocket_disable_keepalive[pyloop] PASSED +tests/test_web_websocket_functional.py::test_websocket_json[pyloop] PASSED +tests/test_web_websocket_functional.py::test_websocket_json_invalid_message[pyloop] PASSED +tests/test_web_websocket_functional.py::test_websocket_receive_json[pyloop] PASSED +tests/test_web_websocket_functional.py::test_websocket_send_json[pyloop] PASSED tests/test_web_websocket_functional.py::test_websocket_shutdown[pyloop] PASSED tests/test_web_websocket_functional.py::test_ws_close_return_code[pyloop] PASSED -tests/test_web_websocket_functional.py::test_abnormal_closure_when_server_does_not_receive[pyloop] PASSED -tests/test_websocket_handshake.py::test_no_upgrade PASSED -tests/test_websocket_handshake.py::test_no_connection PASSED -tests/test_websocket_handshake.py::test_protocol_version_unset PASSED -tests/test_websocket_handshake.py::test_protocol_version_not_supported PASSED -tests/test_websocket_handshake.py::test_protocol_key_not_present PASSED -tests/test_websocket_handshake.py::test_protocol_key_invalid PASSED -tests/test_websocket_handshake.py::test_protocol_key_bad_size PASSED -tests/test_websocket_handshake.py::test_handshake_ok PASSED -tests/test_websocket_handshake.py::test_handshake_protocol PASSED -tests/test_websocket_handshake.py::test_handshake_protocol_agreement PASSED -tests/test_websocket_handshake.py::test_handshake_protocol_unsupported PASSED +tests/test_websocket_data_queue.py::TestWebSocketDataQueue::test_feed_pause[pyloop] PASSED +tests/test_websocket_data_queue.py::TestWebSocketDataQueue::test_resume_on_read[pyloop] PASSED tests/test_websocket_handshake.py::test_handshake_compress PASSED -tests/test_websocket_handshake.py::test_handshake_compress_server_notakeover PASSED -tests/test_websocket_handshake.py::test_handshake_compress_client_notakeover PASSED -tests/test_websocket_handshake.py::test_handshake_compress_wbits PASSED -tests/test_websocket_handshake.py::test_handshake_compress_wbits_error PASSED tests/test_websocket_handshake.py::test_handshake_compress_bad_ext PASSED +tests/test_websocket_handshake.py::test_handshake_compress_client_notakeover PASSED tests/test_websocket_handshake.py::test_handshake_compress_multi_ext_bad PASSED tests/test_websocket_handshake.py::test_handshake_compress_multi_ext_wbits PASSED +tests/test_websocket_handshake.py::test_handshake_compress_server_notakeover PASSED +tests/test_websocket_handshake.py::test_handshake_compress_wbits PASSED +tests/test_websocket_handshake.py::test_handshake_compress_wbits_error PASSED tests/test_websocket_handshake.py::test_handshake_no_transfer_encoding PASSED -tests/test_websocket_parser.py::test_parse_frame[pyloop] PASSED -tests/test_websocket_parser.py::test_parse_frame_length0[pyloop] PASSED -tests/test_websocket_parser.py::test_parse_frame_length2[pyloop] PASSED -tests/test_websocket_parser.py::test_parse_frame_length4[pyloop] PASSED -tests/test_websocket_parser.py::test_parse_frame_mask[pyloop] PASSED -tests/test_websocket_parser.py::test_parse_frame_header_reversed_bits[pyloop] PASSED -tests/test_websocket_parser.py::test_parse_frame_header_control_frame[pyloop] PASSED -tests/test_websocket_parser.py::test_parse_frame_header_payload_size[pyloop] PASSED -tests/test_websocket_parser.py::test_ping_frame[pyloop] PASSED -tests/test_websocket_parser.py::test_pong_frame[pyloop] PASSED +tests/test_websocket_handshake.py::test_handshake_ok PASSED +tests/test_websocket_handshake.py::test_handshake_protocol PASSED +tests/test_websocket_handshake.py::test_handshake_protocol_agreement PASSED +tests/test_websocket_handshake.py::test_handshake_protocol_unsupported PASSED +tests/test_websocket_handshake.py::test_no_connection PASSED +tests/test_websocket_handshake.py::test_no_upgrade PASSED +tests/test_websocket_handshake.py::test_protocol_key_bad_size PASSED +tests/test_websocket_handshake.py::test_protocol_key_invalid PASSED +tests/test_websocket_handshake.py::test_protocol_key_not_present PASSED +tests/test_websocket_handshake.py::test_protocol_version_not_supported PASSED +tests/test_websocket_handshake.py::test_protocol_version_unset PASSED +tests/test_websocket_parser.py::TestWebSocketError::test_ctor PASSED +tests/test_websocket_parser.py::TestWebSocketError::test_pickle PASSED tests/test_websocket_parser.py::test_close_frame[pyloop] PASSED tests/test_websocket_parser.py::test_close_frame_info[pyloop] PASSED tests/test_websocket_parser.py::test_close_frame_invalid[pyloop] PASSED tests/test_websocket_parser.py::test_close_frame_invalid_2[pyloop] PASSED tests/test_websocket_parser.py::test_close_frame_unicode_err[pyloop] PASSED -tests/test_websocket_parser.py::test_unknown_frame[pyloop] PASSED -tests/test_websocket_parser.py::test_simple_text[pyloop] PASSED -tests/test_websocket_parser.py::test_simple_text_unicode_err[pyloop] PASSED -tests/test_websocket_parser.py::test_simple_binary[pyloop] PASSED -tests/test_websocket_parser.py::test_fragmentation_header[pyloop] PASSED +tests/test_websocket_parser.py::test_compressed_msg_too_large[pyloop] PASSED tests/test_websocket_parser.py::test_continuation[pyloop] PASSED -tests/test_websocket_parser.py::test_continuation_with_ping[pyloop] PASSED tests/test_websocket_parser.py::test_continuation_err[pyloop] PASSED tests/test_websocket_parser.py::test_continuation_with_close[pyloop] PASSED -tests/test_websocket_parser.py::test_continuation_with_close_unicode_err[pyloop] PASSED tests/test_websocket_parser.py::test_continuation_with_close_bad_code[pyloop] PASSED tests/test_websocket_parser.py::test_continuation_with_close_bad_payload[pyloop] PASSED tests/test_websocket_parser.py::test_continuation_with_close_empty[pyloop] PASSED -tests/test_websocket_parser.py::test_websocket_mask_python PASSED -tests/test_websocket_parser.py::test_websocket_mask_cython PASSED -tests/test_websocket_parser.py::test_websocket_mask_python_empty PASSED -tests/test_websocket_parser.py::test_websocket_mask_cython_empty PASSED -tests/test_websocket_parser.py::test_msgtype_aliases PASSED -tests/test_websocket_parser.py::test_parse_compress_frame_single[pyloop] PASSED -tests/test_websocket_parser.py::test_parse_compress_frame_multi[pyloop] PASSED -tests/test_websocket_parser.py::test_parse_compress_error_frame[pyloop] PASSED -tests/test_websocket_parser.py::test_parse_no_compress_frame_single PASSED +tests/test_websocket_parser.py::test_continuation_with_close_unicode_err[pyloop] PASSED +tests/test_websocket_parser.py::test_continuation_with_ping[pyloop] PASSED +tests/test_websocket_parser.py::test_feed_data_remembers_exception[pyloop] PASSED +tests/test_websocket_parser.py::test_flow_control_binary[pyloop] PASSED +tests/test_websocket_parser.py::test_flow_control_multi_byte_text[pyloop] PASSED +tests/test_websocket_parser.py::test_fragmentation_header[pyloop] PASSED tests/test_websocket_parser.py::test_msg_too_large[pyloop] PASSED tests/test_websocket_parser.py::test_msg_too_large_not_fin[pyloop] PASSED -tests/test_websocket_parser.py::test_compressed_msg_too_large[pyloop] PASSED -tests/test_websocket_parser.py::TestWebSocketError::test_ctor PASSED -tests/test_websocket_parser.py::TestWebSocketError::test_pickle PASSED -tests/test_websocket_writer.py::test_pong PASSED +tests/test_websocket_parser.py::test_msgtype_aliases PASSED +tests/test_websocket_parser.py::test_parse_compress_error_frame[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_compress_frame_multi[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_compress_frame_single[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_frame[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_frame_header_control_frame[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_frame_header_payload_size[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_frame_header_reversed_bits[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_frame_length0[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_frame_length2[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_frame_length2_multi_byte[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_frame_length2_multi_byte_multi_packet[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_frame_length4[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_frame_mask[pyloop] PASSED +tests/test_websocket_parser.py::test_parse_no_compress_frame_single[pyloop] PASSED +tests/test_websocket_parser.py::test_ping_frame[pyloop-bytearray] PASSED +tests/test_websocket_parser.py::test_ping_frame[pyloop-bytes] PASSED +tests/test_websocket_parser.py::test_ping_frame[pyloop-memoryview] PASSED +tests/test_websocket_parser.py::test_pong_frame[pyloop] PASSED +tests/test_websocket_parser.py::test_simple_binary[pyloop] PASSED +tests/test_websocket_parser.py::test_simple_text[pyloop] PASSED +tests/test_websocket_parser.py::test_simple_text_unicode_err[pyloop] PASSED +tests/test_websocket_parser.py::test_unknown_frame[pyloop] PASSED +tests/test_websocket_parser.py::test_websocket_mask_cython PASSED +tests/test_websocket_parser.py::test_websocket_mask_cython_empty PASSED +tests/test_websocket_parser.py::test_websocket_mask_python PASSED +tests/test_websocket_parser.py::test_websocket_mask_python_empty PASSED +tests/test_websocket_writer.py::test_close PASSED +tests/test_websocket_writer.py::test_concurrent_messages[16-] PASSED +tests/test_websocket_writer.py::test_concurrent_messages[32-] PASSED +tests/test_websocket_writer.py::test_concurrent_messages[4096-] PASSED tests/test_websocket_writer.py::test_ping PASSED -tests/test_websocket_writer.py::test_send_text PASSED +tests/test_websocket_writer.py::test_pong PASSED tests/test_websocket_writer.py::test_send_binary PASSED tests/test_websocket_writer.py::test_send_binary_long PASSED tests/test_websocket_writer.py::test_send_binary_very_long PASSED -tests/test_websocket_writer.py::test_close PASSED -tests/test_websocket_writer.py::test_send_text_masked PASSED tests/test_websocket_writer.py::test_send_compress_text PASSED tests/test_websocket_writer.py::test_send_compress_text_notakeover PASSED tests/test_websocket_writer.py::test_send_compress_text_per_message PASSED -tests/test_websocket_writer.py::test_concurrent_messages[16-] PASSED -tests/test_websocket_writer.py::test_concurrent_messages[4096-] PASSED -tests/test_websocket_writer.py::test_concurrent_messages[32-] PASSED +tests/test_websocket_writer.py::test_send_text PASSED +tests/test_websocket_writer.py::test_send_text_masked PASSED +tests/test_worker.py::test__create_ssl_context_with_ca_certs[AsyncioWorker-pyloop] PASSED +tests/test_worker.py::test__create_ssl_context_with_ciphers[AsyncioWorker-pyloop] PASSED +tests/test_worker.py::test__create_ssl_context_without_certs_and_ciphers[AsyncioWorker-pyloop] PASSED +tests/test_worker.py::test__get_valid_log_format_exc[AsyncioWorker-pyloop] PASSED +tests/test_worker.py::test__get_valid_log_format_ok[AsyncioWorker-pyloop-%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"-%a %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"] PASSED +tests/test_worker.py::test__get_valid_log_format_ok[AsyncioWorker-pyloop-%a "%{Referrer}i" %s-%a "%{Referrer}i" %s] PASSED +tests/test_worker.py::test__notify_waiter_done[AsyncioWorker-pyloop] PASSED +tests/test_worker.py::test__notify_waiter_done_explicit_waiter[AsyncioWorker-pyloop] PASSED +tests/test_worker.py::test__run_exc[AsyncioWorker-pyloop] PASSED +tests/test_worker.py::test__run_ok_parent_changed[AsyncioWorker-pyloop] PASSED +tests/test_worker.py::test__wait_next_notify[AsyncioWorker-pyloop] PASSED +tests/test_worker.py::test_handle_abort[AsyncioWorker-pyloop] PASSED tests/test_worker.py::test_init_process[AsyncioWorker-pyloop] PASSED +tests/test_worker.py::test_init_signals[AsyncioWorker-pyloop] PASSED tests/test_worker.py::test_run[AsyncioWorker-pyloop] PASSED tests/test_worker.py::test_run_async_factory[AsyncioWorker-pyloop] PASSED tests/test_worker.py::test_run_not_app[AsyncioWorker-pyloop] PASSED -tests/test_worker.py::test_handle_abort[AsyncioWorker-pyloop] PASSED -tests/test_worker.py::test__wait_next_notify[AsyncioWorker-pyloop] PASSED -tests/test_worker.py::test__notify_waiter_done[AsyncioWorker-pyloop] PASSED -tests/test_worker.py::test__notify_waiter_done_explicit_waiter[AsyncioWorker-pyloop] PASSED -tests/test_worker.py::test_init_signals[AsyncioWorker-pyloop] PASSED -tests/test_worker.py::test__get_valid_log_format_ok[AsyncioWorker-pyloop-%a "%{Referrer}i" %s-%a "%{Referrer}i" %s] PASSED -tests/test_worker.py::test__get_valid_log_format_ok[AsyncioWorker-pyloop-%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"-%a %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"] PASSED -tests/test_worker.py::test__get_valid_log_format_exc[AsyncioWorker-pyloop] PASSED -tests/test_worker.py::test__run_ok_parent_changed[AsyncioWorker-pyloop] PASSED -tests/test_worker.py::test__run_exc[AsyncioWorker-pyloop] PASSED -tests/test_worker.py::test__create_ssl_context_without_certs_and_ciphers[AsyncioWorker-pyloop] PASSED -tests/test_worker.py::test__create_ssl_context_with_ciphers[AsyncioWorker-pyloop] PASSED -tests/test_worker.py::test__create_ssl_context_with_ca_certs[AsyncioWorker-pyloop] PASSED ============================= slowest 10 durations ============================= =========================== short test summary info ============================ -======== 3262 passed, 39 skipped, 6 deselected, 6 xfailed ======== +======== 3323 passed, 38 skipped, 6 xfailed ======== -- 2.11.4.GIT