py$(PYV): remove tox env folder $(@D)/.tox/py$(PYV) py$(PYV): commands[0]> python -m pytest -v --tb=short --basetemp=$(@D)/.tox/py$(PYV)/tmp ============================= test session starts ============================== platform sunos5 -- Python $(PYTHON_VERSION).X -- $(@D)/.tox/py$(PYV)/bin/python cachedir: .tox/py$(PYV)/.pytest_cache rootdir: $(@D) configfile: pyproject.toml testpaths: tests collecting ... collected 948 items / 25 deselected / 923 selected tests/middleware/test_dispatcher.py::test_dispatcher PASSED tests/middleware/test_lint.py::test_lint_middleware PASSED tests/middleware/test_lint.py::test_lint_middleware_check_environ[wsgi.version-value0-Environ is not a WSGI 1.0 environ.] PASSED tests/middleware/test_lint.py::test_lint_middleware_check_environ[SCRIPT_NAME-test-'SCRIPT_NAME' does not start with a slash:] PASSED tests/middleware/test_lint.py::test_lint_middleware_check_environ[PATH_INFO-test-'PATH_INFO' does not start with a slash:] PASSED tests/middleware/test_lint.py::test_lint_middleware_invalid_status PASSED tests/middleware/test_lint.py::test_lint_middleware_http_headers[headers0-Header list is not a list.] PASSED tests/middleware/test_lint.py::test_lint_middleware_http_headers[headers1-Header items must be 2-item tuples.] PASSED tests/middleware/test_lint.py::test_lint_middleware_http_headers[headers2-The status header is not supported.] PASSED tests/middleware/test_lint.py::test_lint_middleware_invalid_location PASSED tests/middleware/test_profiler.py::test_filename_format_function PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[for] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[proto] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[host] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[port, host without port] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[port, host with port] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[port, name] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[prefix] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[all] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[multiple for] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[ignore 0] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[ignore len < trusted] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[ignore untrusted] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[ignore empty] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[prefix < for] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[ipv6 host] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[ipv6 port, host without port] PASSED tests/middleware/test_proxy_fix.py::test_proxy_fix[ipv6 - port, host with port] PASSED tests/middleware/test_shared_data.py::test_get_file_loader PASSED tests/middleware/test_shared_data.py::test_shared_data_middleware PASSED tests/sansio/test_multipart.py::test_decoder_simple PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[-A] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[-\n] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[-\r] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[-\r\n] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[-\n\r] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[-A\n] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[-A\r] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[-A\r\n] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[-A\n\r] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[\r\n--foo-A] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[\r\n--foo-\n] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[\r\n--foo-\r] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[\r\n--foo-\r\n] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[\r\n--foo-\n\r] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[\r\n--foo-A\n] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[\r\n--foo-A\r] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[\r\n--foo-A\r\n] PASSED tests/sansio/test_multipart.py::test_decoder_data_start_with_different_newline_positions[\r\n--foo-A\n\r] PASSED tests/sansio/test_multipart.py::test_chunked_boundaries PASSED tests/sansio/test_multipart.py::test_empty_field PASSED tests/sansio/test_request.py::test_content_length[headers0-None] PASSED tests/sansio/test_request.py::test_content_length[headers1-6] PASSED tests/sansio/test_request.py::test_content_length[headers2-6] PASSED tests/sansio/test_request.py::test_content_length[headers3-0] PASSED tests/sansio/test_request.py::test_content_length[headers4-0] PASSED tests/sansio/test_request.py::test_content_length[headers5-0] PASSED tests/sansio/test_request.py::test_content_length[headers6-0] PASSED tests/sansio/test_request.py::test_content_length[headers7-None] PASSED tests/sansio/test_request.py::test_cookies PASSED tests/sansio/test_utils.py::test_get_host[http-spam-None-spam] PASSED tests/sansio/test_utils.py::test_get_host[http-spam:80-None-spam] PASSED tests/sansio/test_utils.py::test_get_host[https-spam-None-spam] PASSED tests/sansio/test_utils.py::test_get_host[https-spam:443-None-spam] PASSED tests/sansio/test_utils.py::test_get_host[http-spam:8080-None-spam:8080] PASSED tests/sansio/test_utils.py::test_get_host[http-127.0.0.1:8080-None-127.0.0.1:8080] PASSED tests/sansio/test_utils.py::test_get_host[http-[::1]:8080-None-[::1]:8080] PASSED tests/sansio/test_utils.py::test_get_host[ws-spam-None-spam] PASSED tests/sansio/test_utils.py::test_get_host[ws-spam:80-None-spam] PASSED tests/sansio/test_utils.py::test_get_host[wss-spam-None-spam] PASSED tests/sansio/test_utils.py::test_get_host[wss-spam:443-None-spam] PASSED tests/sansio/test_utils.py::test_get_host[http-None-server11-spam] PASSED tests/sansio/test_utils.py::test_get_host[http-None-server12-spam:8080] PASSED tests/sansio/test_utils.py::test_get_host[http-None-server13-127.0.0.1:8080] PASSED tests/sansio/test_utils.py::test_get_host[http-None-server14-[::1]:8080] PASSED tests/sansio/test_utils.py::test_get_host[http-None-server15-unix/socket] PASSED tests/sansio/test_utils.py::test_get_host[http-spam-server16-spam] PASSED tests/sansio/test_utils.py::test_get_content_length[2-None-2] PASSED tests/sansio/test_utils.py::test_get_content_length[ 2-None-2] PASSED tests/sansio/test_utils.py::test_get_content_length[2 -None-2] PASSED tests/sansio/test_utils.py::test_get_content_length[None-None-None] PASSED tests/sansio/test_utils.py::test_get_content_length[None-chunked-None] PASSED tests/sansio/test_utils.py::test_get_content_length[a-None-0] PASSED tests/sansio/test_utils.py::test_get_content_length[-2-None-0] PASSED tests/test_datastructures.py::TestNativeItermethods::test_basic PASSED tests/test_datastructures.py::TestImmutableTypeConversionDict::test_follows_dict_interface PASSED tests/test_datastructures.py::TestImmutableTypeConversionDict::test_copies_are_mutable PASSED tests/test_datastructures.py::TestImmutableTypeConversionDict::test_dict_is_hashable PASSED tests/test_datastructures.py::TestImmutableTypeConversionDict::test_or PASSED tests/test_datastructures.py::TestImmutableTypeConversionDict::test_ior PASSED tests/test_datastructures.py::TestImmutableMultiDict::test_follows_dict_interface PASSED tests/test_datastructures.py::TestImmutableMultiDict::test_copies_are_mutable PASSED tests/test_datastructures.py::TestImmutableMultiDict::test_dict_is_hashable PASSED tests/test_datastructures.py::TestImmutableMultiDict::test_or PASSED tests/test_datastructures.py::TestImmutableMultiDict::test_ior PASSED tests/test_datastructures.py::TestImmutableMultiDict::test_multidict_is_hashable PASSED tests/test_datastructures.py::TestImmutableDict::test_follows_dict_interface PASSED tests/test_datastructures.py::TestImmutableDict::test_copies_are_mutable PASSED tests/test_datastructures.py::TestImmutableDict::test_dict_is_hashable PASSED tests/test_datastructures.py::TestImmutableDict::test_or PASSED tests/test_datastructures.py::TestImmutableDict::test_ior PASSED tests/test_datastructures.py::TestImmutableOrderedMultiDict::test_follows_dict_interface PASSED tests/test_datastructures.py::TestImmutableOrderedMultiDict::test_copies_are_mutable PASSED tests/test_datastructures.py::TestImmutableOrderedMultiDict::test_dict_is_hashable PASSED tests/test_datastructures.py::TestImmutableOrderedMultiDict::test_or PASSED tests/test_datastructures.py::TestImmutableOrderedMultiDict::test_ior PASSED tests/test_datastructures.py::TestImmutableOrderedMultiDict::test_ordered_multidict_is_hashable PASSED tests/test_datastructures.py::TestMultiDict::test_pickle PASSED tests/test_datastructures.py::TestMultiDict::test_multidict_dict_interop PASSED tests/test_datastructures.py::TestMultiDict::test_basic_interface PASSED tests/test_datastructures.py::TestMultiDict::test_or PASSED tests/test_datastructures.py::TestMultiDict::test_ior PASSED tests/test_datastructures.py::TestMultiDict::test_multidict_pop PASSED tests/test_datastructures.py::TestMultiDict::test_multidict_pop_raise_badrequestkeyerror_for_empty_list_value PASSED tests/test_datastructures.py::TestMultiDict::test_multidict_popitem_raise_badrequestkeyerror_for_empty_list_value PASSED tests/test_datastructures.py::TestMultiDict::test_setlistdefault PASSED tests/test_datastructures.py::TestMultiDict::test_iter_interfaces PASSED tests/test_datastructures.py::TestMultiDict::test_getitem_raise_badrequestkeyerror_for_empty_list_value PASSED tests/test_datastructures.py::TestOrderedMultiDict::test_pickle PASSED tests/test_datastructures.py::TestOrderedMultiDict::test_multidict_dict_interop PASSED tests/test_datastructures.py::TestOrderedMultiDict::test_basic_interface PASSED tests/test_datastructures.py::TestOrderedMultiDict::test_or PASSED tests/test_datastructures.py::TestOrderedMultiDict::test_ior PASSED tests/test_datastructures.py::TestOrderedMultiDict::test_ordered_interface PASSED tests/test_datastructures.py::TestOrderedMultiDict::test_iterables PASSED tests/test_datastructures.py::TestOrderedMultiDict::test_get_description PASSED tests/test_datastructures.py::TestTypeConversionDict::test_value_conversion PASSED tests/test_datastructures.py::TestTypeConversionDict::test_return_default_when_conversion_is_not_possible PASSED tests/test_datastructures.py::TestTypeConversionDict::test_propagate_exceptions_in_conversion PASSED tests/test_datastructures.py::TestCombinedMultiDict::test_basic_interface PASSED tests/test_datastructures.py::TestCombinedMultiDict::test_length PASSED tests/test_datastructures.py::TestHeaders::test_basic_interface PASSED tests/test_datastructures.py::TestHeaders::test_defaults_and_conversion PASSED tests/test_datastructures.py::TestHeaders::test_copying PASSED tests/test_datastructures.py::TestHeaders::test_popping PASSED tests/test_datastructures.py::TestHeaders::test_set_arguments PASSED tests/test_datastructures.py::TestHeaders::test_reject_newlines PASSED tests/test_datastructures.py::TestHeaders::test_slicing PASSED tests/test_datastructures.py::TestHeaders::test_extend PASSED tests/test_datastructures.py::TestHeaders::test_update PASSED tests/test_datastructures.py::TestHeaders::test_setlist PASSED tests/test_datastructures.py::TestHeaders::test_setlistdefault PASSED tests/test_datastructures.py::TestHeaders::test_to_wsgi_list PASSED tests/test_datastructures.py::TestHeaders::test_equality PASSED tests/test_datastructures.py::TestHeaders::test_or PASSED tests/test_datastructures.py::TestHeaders::test_ior PASSED tests/test_datastructures.py::TestEnvironHeaders::test_basic_interface PASSED tests/test_datastructures.py::TestEnvironHeaders::test_skip_empty_special_vars PASSED tests/test_datastructures.py::TestEnvironHeaders::test_return_type_is_str PASSED tests/test_datastructures.py::TestEnvironHeaders::test_or PASSED tests/test_datastructures.py::TestEnvironHeaders::test_ior PASSED tests/test_datastructures.py::TestEnvironHeaders::test_str PASSED tests/test_datastructures.py::TestHeaderSet::test_basic_interface PASSED tests/test_datastructures.py::TestImmutableList::test_list_hashable PASSED tests/test_datastructures.py::TestCallbackDict::test_callback_dict_reads PASSED tests/test_datastructures.py::TestCallbackDict::test_callback_dict_writes PASSED tests/test_datastructures.py::TestCacheControl::test_repr PASSED tests/test_datastructures.py::TestCacheControl::test_set_none PASSED tests/test_datastructures.py::TestCacheControl::test_no_transform PASSED tests/test_datastructures.py::TestCacheControl::test_min_fresh PASSED tests/test_datastructures.py::TestCacheControl::test_must_understand PASSED tests/test_datastructures.py::TestCacheControl::test_stale_while_revalidate PASSED tests/test_datastructures.py::TestCacheControl::test_stale_if_error PASSED tests/test_datastructures.py::TestContentSecurityPolicy::test_construct PASSED tests/test_datastructures.py::TestContentSecurityPolicy::test_properties PASSED tests/test_datastructures.py::TestAccept::test_accept_basic PASSED tests/test_datastructures.py::TestAccept::test_accept_wildcard PASSED tests/test_datastructures.py::TestAccept::test_accept_keep_order PASSED tests/test_datastructures.py::TestAccept::test_accept_wildcard_specificity PASSED tests/test_datastructures.py::TestAccept::test_accept_equal_quality PASSED tests/test_datastructures.py::TestMIMEAccept::test_mime_accept[values0-matches0-None-text/html] PASSED tests/test_datastructures.py::TestMIMEAccept::test_mime_accept[values1-matches1-text/plain-text/plain] PASSED tests/test_datastructures.py::TestMIMEAccept::test_mime_accept[values2-matches2-None-None] PASSED tests/test_datastructures.py::TestMIMEAccept::test_mime_accept[values3-matches3-None-text/html] PASSED tests/test_datastructures.py::TestMIMEAccept::test_mime_accept[values4-matches4-None-image/png] PASSED tests/test_datastructures.py::TestMIMEAccept::test_mime_accept[values5-matches5-None-text/html] PASSED tests/test_datastructures.py::TestMIMEAccept::test_mime_accept[values6-matches6-None-image/png] PASSED tests/test_datastructures.py::TestMIMEAccept::test_mime_accept[values7-matches7-None-text/html;level=1] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values0-matches0-None-en] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values1-matches1-None-en_US] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values2-matches2-None-None] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values3-matches3-None-None] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values4-matches4-None-de] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values5-matches5-None-en] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values6-matches6-None-en-us] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values7-matches7-None-en-us] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values8-matches8-en-US-en] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values9-matches9-en-US-en-US] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values10-matches10-None-aus] PASSED tests/test_datastructures.py::TestLanguageAccept::test_best_match_fallback[values11-matches11-None-aus-EN] PASSED tests/test_datastructures.py::TestFileStorage::test_mimetype_always_lowercase PASSED tests/test_datastructures.py::TestFileStorage::test_bytes_proper_sentinel[data0] PASSED tests/test_datastructures.py::TestFileStorage::test_bytes_proper_sentinel[data1] PASSED tests/test_datastructures.py::TestFileStorage::test_proxy_can_access_stream_attrs[SpooledTemporaryFile] PASSED tests/test_datastructures.py::TestFileStorage::test_proxy_can_access_stream_attrs[BytesIO] PASSED tests/test_datastructures.py::TestFileStorage::test_save_to_pathlib_dst PASSED tests/test_datastructures.py::TestFileStorage::test_save_to_bytes_io PASSED tests/test_datastructures.py::TestFileStorage::test_save_to_file PASSED tests/test_datastructures.py::test_range_to_header[ranges0] PASSED tests/test_datastructures.py::test_range_to_header[ranges1] PASSED tests/test_datastructures.py::test_range_validates_ranges[ranges0] PASSED tests/test_datastructures.py::test_range_validates_ranges[ranges1] PASSED tests/test_datastructures.py::test_range_validates_ranges[ranges2] PASSED tests/test_datastructures.py::test_range_validates_ranges[ranges3] PASSED tests/test_datastructures.py::test_iter_multi_data[value0-expect0] PASSED tests/test_datastructures.py::test_iter_multi_data[value1-expect1] PASSED tests/test_datastructures.py::test_iter_multi_data[value2-expect2] PASSED tests/test_debug.py::TestDebugRepr::test_basic_repr PASSED tests/test_debug.py::TestDebugRepr::test_string_repr PASSED tests/test_debug.py::TestDebugRepr::test_string_subclass_repr PASSED tests/test_debug.py::TestDebugRepr::test_sequence_repr PASSED tests/test_debug.py::TestDebugRepr::test_mapping_repr PASSED tests/test_debug.py::TestDebugRepr::test_custom_repr PASSED tests/test_debug.py::TestDebugRepr::test_list_subclass_repr PASSED tests/test_debug.py::TestDebugRepr::test_regex_repr PASSED tests/test_debug.py::TestDebugRepr::test_set_repr PASSED tests/test_debug.py::TestDebugRepr::test_recursive_repr PASSED tests/test_debug.py::TestDebugRepr::test_broken_repr PASSED tests/test_debug.py::TestDebugHelpers::test_object_dumping PASSED tests/test_debug.py::TestDebugHelpers::test_debug_dump PASSED tests/test_debug.py::TestDebugHelpers::test_debug_help PASSED tests/test_debug.py::TestDebugHelpers::test_exc_divider_found_on_chained_exception PASSED tests/test_debug.py::test_get_machine_id PASSED tests/test_debug.py::test_console_closure_variables PASSED tests/test_debug.py::test_chained_exception_cycle PASSED tests/test_debug.py::test_exception_without_traceback PASSED tests/test_exceptions.py::test_proxy_exception PASSED tests/test_exceptions.py::test_aborter_general[test0] PASSED tests/test_exceptions.py::test_aborter_general[test1] PASSED tests/test_exceptions.py::test_aborter_general[test2] PASSED tests/test_exceptions.py::test_aborter_general[test3] PASSED tests/test_exceptions.py::test_aborter_general[test4] PASSED tests/test_exceptions.py::test_aborter_general[test5] PASSED tests/test_exceptions.py::test_aborter_general[test6] PASSED tests/test_exceptions.py::test_aborter_general[test7] PASSED tests/test_exceptions.py::test_aborter_general[test8] PASSED tests/test_exceptions.py::test_aborter_general[test9] PASSED tests/test_exceptions.py::test_aborter_general[test10] PASSED tests/test_exceptions.py::test_aborter_general[test11] PASSED tests/test_exceptions.py::test_aborter_general[test12] PASSED tests/test_exceptions.py::test_aborter_general[test13] PASSED tests/test_exceptions.py::test_aborter_general[test14] PASSED tests/test_exceptions.py::test_aborter_general[test15] PASSED tests/test_exceptions.py::test_aborter_general[test16] PASSED tests/test_exceptions.py::test_aborter_general[test17] PASSED tests/test_exceptions.py::test_aborter_general[test18] PASSED tests/test_exceptions.py::test_aborter_general[test19] PASSED tests/test_exceptions.py::test_abort_description_markup PASSED tests/test_exceptions.py::test_aborter_custom PASSED tests/test_exceptions.py::test_exception_repr PASSED tests/test_exceptions.py::test_method_not_allowed_methods PASSED tests/test_exceptions.py::test_unauthorized_www_authenticate PASSED tests/test_exceptions.py::test_response_header_content_type_should_contain_charset PASSED tests/test_exceptions.py::test_retry_after_mixin[TooManyRequests-20-20] PASSED tests/test_exceptions.py::test_retry_after_mixin[ServiceUnavailable-value1-Sat, 04 Jan 2020 18:52:16 GMT] PASSED tests/test_exceptions.py::test_passing_response[BadRequest] PASSED tests/test_exceptions.py::test_passing_response[Unauthorized] PASSED tests/test_exceptions.py::test_passing_response[Forbidden] PASSED tests/test_exceptions.py::test_passing_response[NotFound] PASSED tests/test_exceptions.py::test_passing_response[MethodNotAllowed] PASSED tests/test_exceptions.py::test_passing_response[NotAcceptable] PASSED tests/test_exceptions.py::test_passing_response[RequestTimeout] PASSED tests/test_exceptions.py::test_passing_response[Conflict] PASSED tests/test_exceptions.py::test_passing_response[Gone] PASSED tests/test_exceptions.py::test_passing_response[LengthRequired] PASSED tests/test_exceptions.py::test_passing_response[PreconditionFailed] PASSED tests/test_exceptions.py::test_passing_response[RequestEntityTooLarge] PASSED tests/test_exceptions.py::test_passing_response[RequestURITooLarge] PASSED tests/test_exceptions.py::test_passing_response[UnsupportedMediaType] PASSED tests/test_exceptions.py::test_passing_response[RequestedRangeNotSatisfiable] PASSED tests/test_exceptions.py::test_passing_response[ExpectationFailed] PASSED tests/test_exceptions.py::test_passing_response[ImATeapot] PASSED tests/test_exceptions.py::test_passing_response[MisdirectedRequest] PASSED tests/test_exceptions.py::test_passing_response[UnprocessableEntity] PASSED tests/test_exceptions.py::test_passing_response[Locked] PASSED tests/test_exceptions.py::test_passing_response[FailedDependency] PASSED tests/test_exceptions.py::test_passing_response[PreconditionRequired] PASSED tests/test_exceptions.py::test_passing_response[TooManyRequests] PASSED tests/test_exceptions.py::test_passing_response[RequestHeaderFieldsTooLarge] PASSED tests/test_exceptions.py::test_passing_response[UnavailableForLegalReasons] PASSED tests/test_exceptions.py::test_passing_response[InternalServerError] PASSED tests/test_exceptions.py::test_passing_response[NotImplemented] PASSED tests/test_exceptions.py::test_passing_response[BadGateway] PASSED tests/test_exceptions.py::test_passing_response[ServiceUnavailable] PASSED tests/test_exceptions.py::test_passing_response[GatewayTimeout] PASSED tests/test_exceptions.py::test_passing_response[HTTPVersionNotSupported] PASSED tests/test_exceptions.py::test_description_none PASSED tests/test_exceptions.py::test_response_body[BadRequest] PASSED tests/test_exceptions.py::test_response_body[Unauthorized] PASSED tests/test_exceptions.py::test_response_body[Forbidden] PASSED tests/test_exceptions.py::test_response_body[NotFound] PASSED tests/test_exceptions.py::test_response_body[MethodNotAllowed] PASSED tests/test_exceptions.py::test_response_body[NotAcceptable] PASSED tests/test_exceptions.py::test_response_body[RequestTimeout] PASSED tests/test_exceptions.py::test_response_body[Conflict] PASSED tests/test_exceptions.py::test_response_body[Gone] PASSED tests/test_exceptions.py::test_response_body[LengthRequired] PASSED tests/test_exceptions.py::test_response_body[PreconditionFailed] PASSED tests/test_exceptions.py::test_response_body[RequestEntityTooLarge] PASSED tests/test_exceptions.py::test_response_body[RequestURITooLarge] PASSED tests/test_exceptions.py::test_response_body[UnsupportedMediaType] PASSED tests/test_exceptions.py::test_response_body[RequestedRangeNotSatisfiable] PASSED tests/test_exceptions.py::test_response_body[ExpectationFailed] PASSED tests/test_exceptions.py::test_response_body[ImATeapot] PASSED tests/test_exceptions.py::test_response_body[MisdirectedRequest] PASSED tests/test_exceptions.py::test_response_body[UnprocessableEntity] PASSED tests/test_exceptions.py::test_response_body[Locked] PASSED tests/test_exceptions.py::test_response_body[FailedDependency] PASSED tests/test_exceptions.py::test_response_body[PreconditionRequired] PASSED tests/test_exceptions.py::test_response_body[TooManyRequests] PASSED tests/test_exceptions.py::test_response_body[RequestHeaderFieldsTooLarge] PASSED tests/test_exceptions.py::test_response_body[UnavailableForLegalReasons] PASSED tests/test_exceptions.py::test_response_body[InternalServerError] PASSED tests/test_exceptions.py::test_response_body[NotImplemented] PASSED tests/test_exceptions.py::test_response_body[BadGateway] PASSED tests/test_exceptions.py::test_response_body[ServiceUnavailable] PASSED tests/test_exceptions.py::test_response_body[GatewayTimeout] PASSED tests/test_exceptions.py::test_response_body[HTTPVersionNotSupported] PASSED tests/test_formparser.py::TestFormParser::test_limiting PASSED tests/test_formparser.py::TestFormParser::test_urlencoded_no_max PASSED tests/test_formparser.py::TestFormParser::test_urlencoded_silent_decode PASSED tests/test_formparser.py::TestFormParser::test_missing_multipart_boundary PASSED tests/test_formparser.py::TestFormParser::test_parse_form_data_put_without_content PASSED tests/test_formparser.py::TestFormParser::test_parse_form_data_get_without_content PASSED tests/test_formparser.py::TestFormParser::test_default_stream_factory[False-100] PASSED tests/test_formparser.py::TestFormParser::test_default_stream_factory[False-3000] PASSED tests/test_formparser.py::TestFormParser::test_default_stream_factory[True-100] PASSED tests/test_formparser.py::TestFormParser::test_default_stream_factory[True-3000] PASSED tests/test_formparser.py::TestFormParser::test_parse_bad_content_type PASSED tests/test_formparser.py::TestFormParser::test_parse_from_environ PASSED tests/test_formparser.py::TestMultiPart::test_basic PASSED tests/test_formparser.py::TestMultiPart::test_ie7_unc_path PASSED tests/test_formparser.py::TestMultiPart::test_end_of_file PASSED tests/test_formparser.py::TestMultiPart::test_file_no_content_type PASSED tests/test_formparser.py::TestMultiPart::test_extra_newline PASSED tests/test_formparser.py::TestMultiPart::test_headers PASSED tests/test_formparser.py::TestMultiPart::test_nonstandard_line_endings[\n] PASSED tests/test_formparser.py::TestMultiPart::test_nonstandard_line_endings[\r] PASSED tests/test_formparser.py::TestMultiPart::test_nonstandard_line_endings[\r\n] PASSED tests/test_formparser.py::TestMultiPart::test_failures PASSED tests/test_formparser.py::TestMultiPart::test_empty_multipart PASSED tests/test_formparser.py::TestMultiPartParser::test_constructor_not_pass_stream_factory_and_cls PASSED tests/test_formparser.py::TestMultiPartParser::test_constructor_pass_stream_factory_and_cls PASSED tests/test_formparser.py::TestMultiPartParser::test_file_rfc2231_filename_continuations PASSED tests/test_formparser.py::test_multipart_max_form_memory_size PASSED tests/test_http.py::TestHTTPUtility::test_accept PASSED tests/test_http.py::TestHTTPUtility::test_accept_parameter_with_space PASSED tests/test_http.py::TestHTTPUtility::test_mime_accept PASSED tests/test_http.py::TestHTTPUtility::test_accept_matches PASSED tests/test_http.py::TestHTTPUtility::test_accept_mime_specificity PASSED tests/test_http.py::TestHTTPUtility::test_charset_accept PASSED tests/test_http.py::TestHTTPUtility::test_language_accept PASSED tests/test_http.py::TestHTTPUtility::test_set_header PASSED tests/test_http.py::TestHTTPUtility::test_list_header[a b-expect0] PASSED tests/test_http.py::TestHTTPUtility::test_list_header[a b, c-expect1] PASSED tests/test_http.py::TestHTTPUtility::test_list_header[a b, "c, d"-expect2] PASSED tests/test_http.py::TestHTTPUtility::test_list_header["a\\"b", c-expect3] PASSED tests/test_http.py::TestHTTPUtility::test_dict_header[foo="bar baz", blah=42-expect0] PASSED tests/test_http.py::TestHTTPUtility::test_dict_header[foo, bar=-expect1] PASSED tests/test_http.py::TestHTTPUtility::test_dict_header[=foo, =-expect2] PASSED tests/test_http.py::TestHTTPUtility::test_cache_control_header PASSED tests/test_http.py::TestHTTPUtility::test_csp_header PASSED tests/test_http.py::TestHTTPUtility::test_authorization_header PASSED tests/test_http.py::TestHTTPUtility::test_authorization_ignore_invalid_parameters PASSED tests/test_http.py::TestHTTPUtility::test_authorization_token_padding PASSED tests/test_http.py::TestHTTPUtility::test_authorization_basic_incorrect_padding PASSED tests/test_http.py::TestHTTPUtility::test_bad_authorization_header_encoding PASSED tests/test_http.py::TestHTTPUtility::test_authorization_eq PASSED tests/test_http.py::TestHTTPUtility::test_www_authenticate_header PASSED tests/test_http.py::TestHTTPUtility::test_www_authenticate_token_padding PASSED tests/test_http.py::TestHTTPUtility::test_www_authenticate_eq PASSED tests/test_http.py::TestHTTPUtility::test_etags PASSED tests/test_http.py::TestHTTPUtility::test_etags_nonzero PASSED tests/test_http.py::TestHTTPUtility::test_remove_entity_headers PASSED tests/test_http.py::TestHTTPUtility::test_remove_hop_by_hop_headers PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header_empty[None-] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header_empty[-] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header_empty[;a=b-] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header_empty[v-v] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header_empty[v;-v] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a=b;c=d;-expect0] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v; ; a=b ; -expect1] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a-expect2] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a=-expect3] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;=b-expect4] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a="b"-expect5] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a=\xb5-expect6] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a="';'";b="\xb5";-expect7] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a="b c"-expect8] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a="b\\"c";d=e-expect9] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a="c:\\\\"-expect10] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a="c:\\"-expect11] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a="b\\\\\\"c"-expect12] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a="b%22c"-expect13] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a*=b-expect14] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a*=ASCII'en'b-expect15] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a*=US-ASCII''%62-expect16] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a*=UTF-8''%C2%B5-expect17] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a*=US-ASCII''%C2%B5-expect18] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a*=BAD''%62-expect19] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a*=UTF-8'''%F0%9F%90%8D'.txt-expect20] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a="\U0001f40d.txt"-expect21] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a*0=b;a*1=c;d=e-expect22] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a*0*=b-expect23] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a*0*=UTF-8''b;a*1=c;a*2*=%C2%B5-expect24] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header[v;a="\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\-expect25] PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header_broken_values PASSED tests/test_http.py::TestHTTPUtility::test_parse_options_header_case_insensitive PASSED tests/test_http.py::TestHTTPUtility::test_dump_options_header PASSED tests/test_http.py::TestHTTPUtility::test_dump_header PASSED tests/test_http.py::TestHTTPUtility::test_is_resource_modified PASSED tests/test_http.py::TestHTTPUtility::test_is_resource_modified_for_range_requests PASSED tests/test_http.py::TestHTTPUtility::test_parse_cookie PASSED tests/test_http.py::TestHTTPUtility::test_dump_cookie PASSED tests/test_http.py::TestHTTPUtility::test_bad_cookies PASSED tests/test_http.py::TestHTTPUtility::test_empty_keys_are_ignored PASSED tests/test_http.py::TestHTTPUtility::test_cookie_quoting PASSED tests/test_http.py::TestHTTPUtility::test_parse_set_cookie_directive PASSED tests/test_http.py::TestHTTPUtility::test_cookie_domain_resolving PASSED tests/test_http.py::TestHTTPUtility::test_cookie_unicode_dumping PASSED tests/test_http.py::TestHTTPUtility::test_cookie_unicode_keys PASSED tests/test_http.py::TestHTTPUtility::test_cookie_unicode_parsing PASSED tests/test_http.py::TestHTTPUtility::test_cookie_domain_encoding PASSED tests/test_http.py::TestHTTPUtility::test_cookie_maxsize PASSED tests/test_http.py::TestHTTPUtility::test_cookie_samesite_attribute[strict-foo=bar; SameSite=Strict] PASSED tests/test_http.py::TestHTTPUtility::test_cookie_samesite_attribute[lax-foo=bar; SameSite=Lax] PASSED tests/test_http.py::TestHTTPUtility::test_cookie_samesite_attribute[none-foo=bar; SameSite=None] PASSED tests/test_http.py::TestHTTPUtility::test_cookie_samesite_attribute[None-foo=bar] PASSED tests/test_http.py::TestHTTPUtility::test_cookie_samesite_invalid PASSED tests/test_http.py::TestHTTPUtility::test_cookie_partitioned PASSED tests/test_http.py::TestHTTPUtility::test_cookie_partitioned_sets_secure PASSED tests/test_http.py::TestRange::test_if_range_parsing PASSED tests/test_http.py::TestRange::test_range_parsing PASSED tests/test_http.py::TestRange::test_content_range_parsing PASSED tests/test_http.py::TestRegression::test_best_match_works PASSED tests/test_http.py::test_authorization_to_header[Basic V2Vya3pldWc6V2VrcnpldWc=] PASSED tests/test_http.py::test_authorization_to_header[Digest username=Mufasa, realm="testrealm@host.invalid", nonce=dcd98b7102dd2f0e8b11d0f600bfb0c093, uri="/dir/index.html", qop=auth, nc=00000001, cnonce=0a4f113b, response=6629fae49393a05397450978507c4ef1, opaque=5ccc069c403ebaf9f0171e9517f40e41] PASSED tests/test_http.py::test_parse_date[Sun, 06 Nov 1994 08:49:37 GMT -expect0] PASSED tests/test_http.py::test_parse_date[Sunday, 06-Nov-94 08:49:37 GMT-expect1] PASSED tests/test_http.py::test_parse_date[ Sun Nov 6 08:49:37 1994-expect2] PASSED tests/test_http.py::test_parse_date[foo-None] PASSED tests/test_http.py::test_parse_date[ Sun 02 Feb 1343 08:49:37 GMT-expect4] PASSED tests/test_http.py::test_parse_date[Thu, 01 Jan 1970 00:00:00 GMT-expect5] PASSED tests/test_http.py::test_parse_date[Thu, 33 Jan 1970 00:00:00 GMT-None] PASSED tests/test_http.py::test_http_date[value0-Sun, 06 Nov 1994 08:49:37 GMT] PASSED tests/test_http.py::test_http_date[value1-Sun, 06 Nov 1994 16:49:37 GMT] PASSED tests/test_http.py::test_http_date[value2-Sun, 06 Nov 1994 08:49:37 GMT] PASSED tests/test_http.py::test_http_date[0-Thu, 01 Jan 1970 00:00:00 GMT] PASSED tests/test_http.py::test_http_date[value4-Thu, 01 Jan 1970 00:00:00 GMT] PASSED tests/test_http.py::test_http_date[value5-Mon, 01 Jan 0001 00:00:00 GMT] PASSED tests/test_http.py::test_http_date[value6-Tue, 01 Jan 0999 00:00:00 GMT] PASSED tests/test_http.py::test_http_date[value7-Wed, 01 Jan 1000 00:00:00 GMT] PASSED tests/test_http.py::test_http_date[value8-Wed, 01 Jan 2020 00:00:00 GMT] PASSED tests/test_http.py::test_http_date[value9-Wed, 01 Jan 2020 00:00:00 GMT] PASSED tests/test_http.py::test_accept_invalid_float[.5] PASSED tests/test_http.py::test_accept_invalid_float[+0.5] PASSED tests/test_http.py::test_accept_invalid_float[0.5_1] PASSED tests/test_http.py::test_accept_invalid_float[\U0001fbf0.\U0001fbf5] PASSED tests/test_http.py::test_accept_valid_int_one_zero PASSED tests/test_http.py::test_range_invalid_int[\U0001fbf1\U0001fbf2\U0001fbf3] PASSED tests/test_http.py::test_range_invalid_int[+1-] PASSED tests/test_http.py::test_range_invalid_int[1-1_23] PASSED tests/test_http.py::test_content_range_invalid_int[*/\U0001fbf1\U0001fbf2\U0001fbf3] PASSED tests/test_http.py::test_content_range_invalid_int[1-+2/3] PASSED tests/test_http.py::test_content_range_invalid_int[1_23-125/*] PASSED tests/test_internal.py::test_wrapper_internals PASSED tests/test_local.py::test_basic_local PASSED tests/test_local.py::test_basic_local_asyncio PASSED tests/test_local.py::test_local_release PASSED tests/test_local.py::test_local_stack PASSED tests/test_local.py::test_local_stack_asyncio PASSED tests/test_local.py::test_proxy_local PASSED tests/test_local.py::test_proxy_callable PASSED tests/test_local.py::test_proxy_wrapped PASSED tests/test_local.py::test_proxy_doc PASSED tests/test_local.py::test_proxy_fallback PASSED tests/test_local.py::test_proxy_unbound PASSED tests/test_local.py::test_proxy_type PASSED tests/test_local.py::test_proxy_string_representations PASSED tests/test_local.py::test_proxy_hash PASSED tests/test_local.py::test_proxy_binop_int[lt] PASSED tests/test_local.py::test_proxy_binop_int[le] PASSED tests/test_local.py::test_proxy_binop_int[eq] PASSED tests/test_local.py::test_proxy_binop_int[ne] PASSED tests/test_local.py::test_proxy_binop_int[gt] PASSED tests/test_local.py::test_proxy_binop_int[ge] PASSED tests/test_local.py::test_proxy_binop_int[add] PASSED tests/test_local.py::test_proxy_binop_int[sub] PASSED tests/test_local.py::test_proxy_binop_int[mul] PASSED tests/test_local.py::test_proxy_binop_int[truediv] PASSED tests/test_local.py::test_proxy_binop_int[floordiv] PASSED tests/test_local.py::test_proxy_binop_int[mod] PASSED tests/test_local.py::test_proxy_binop_int[divmod] PASSED tests/test_local.py::test_proxy_binop_int[pow] PASSED tests/test_local.py::test_proxy_binop_int[lshift] PASSED tests/test_local.py::test_proxy_binop_int[rshift] PASSED tests/test_local.py::test_proxy_binop_int[and_] PASSED tests/test_local.py::test_proxy_binop_int[or_] PASSED tests/test_local.py::test_proxy_binop_int[xor] PASSED tests/test_local.py::test_proxy_uop_int[neg] PASSED tests/test_local.py::test_proxy_uop_int[pos] PASSED tests/test_local.py::test_proxy_uop_int[abs] PASSED tests/test_local.py::test_proxy_uop_int[invert] PASSED tests/test_local.py::test_proxy_numeric PASSED tests/test_local.py::test_proxy_iop[iadd] PASSED tests/test_local.py::test_proxy_iop[isub] PASSED tests/test_local.py::test_proxy_iop[imul] PASSED tests/test_local.py::test_proxy_iop[imatmul] PASSED tests/test_local.py::test_proxy_iop[itruediv] PASSED tests/test_local.py::test_proxy_iop[ifloordiv] PASSED tests/test_local.py::test_proxy_iop[imod] PASSED tests/test_local.py::test_proxy_iop[ipow] PASSED tests/test_local.py::test_proxy_iop[ilshift] PASSED tests/test_local.py::test_proxy_iop[irshift] PASSED tests/test_local.py::test_proxy_iop[iand] PASSED tests/test_local.py::test_proxy_iop[ior] PASSED tests/test_local.py::test_proxy_iop[ixor] PASSED tests/test_local.py::test_proxy_matmul PASSED tests/test_local.py::test_proxy_str PASSED tests/test_local.py::test_proxy_list PASSED tests/test_local.py::test_proxy_copy PASSED tests/test_local.py::test_proxy_iterator PASSED tests/test_local.py::test_proxy_length_hint PASSED tests/test_local.py::test_proxy_context_manager PASSED tests/test_local.py::test_proxy_class PASSED tests/test_local.py::test_proxy_attributes PASSED tests/test_local.py::test_proxy_await PASSED tests/test_local.py::test_proxy_aiter PASSED tests/test_local.py::test_proxy_async_context_manager PASSED tests/test_routing.py::test_basic_routing PASSED tests/test_routing.py::test_merge_slashes_match PASSED tests/test_routing.py::test_merge_slash_encoding[/merge/%//path-/merge/%25/path] PASSED tests/test_routing.py::test_merge_slash_encoding[/merge//st/path-/merge/st/path] PASSED tests/test_routing.py::test_merge_slashes_build PASSED tests/test_routing.py::test_strict_slashes_redirect PASSED tests/test_routing.py::test_strict_slashes_leaves_dont_consume PASSED tests/test_routing.py::test_environ_defaults PASSED tests/test_routing.py::test_environ_nonascii_pathinfo PASSED tests/test_routing.py::test_basic_building PASSED tests/test_routing.py::test_long_build PASSED tests/test_routing.py::test_defaults PASSED tests/test_routing.py::test_negative PASSED tests/test_routing.py::test_greedy PASSED tests/test_routing.py::test_path PASSED tests/test_routing.py::test_dispatch PASSED tests/test_routing.py::test_http_host_before_server_name PASSED tests/test_routing.py::test_invalid_subdomain_warning PASSED tests/test_routing.py::test_server_name_match_default_port[http://localhost-localhost:80] PASSED tests/test_routing.py::test_server_name_match_default_port[https://localhost-localhost:443] PASSED tests/test_routing.py::test_adapter_url_parameter_sorting PASSED tests/test_routing.py::test_request_direct_charset_bug PASSED tests/test_routing.py::test_request_redirect_default PASSED tests/test_routing.py::test_request_redirect_default_subdomain PASSED tests/test_routing.py::test_adapter_match_return_rule PASSED tests/test_routing.py::test_server_name_interpolation PASSED tests/test_routing.py::test_rule_emptying PASSED tests/test_routing.py::test_rule_unhashable PASSED tests/test_routing.py::test_rule_templates PASSED tests/test_routing.py::test_non_string_parts PASSED tests/test_routing.py::test_complex_routing_rules PASSED tests/test_routing.py::test_default_converters PASSED tests/test_routing.py::test_uuid_converter PASSED tests/test_routing.py::test_converter_with_tuples PASSED tests/test_routing.py::test_nested_regex_groups PASSED tests/test_routing.py::test_anyconverter PASSED tests/test_routing.py::test_any_converter_build_validates_value PASSED tests/test_routing.py::test_part_isolating_default PASSED tests/test_routing.py::test_build_values_dict[int-1-/1] PASSED tests/test_routing.py::test_build_values_dict[int-None-BuildError] PASSED tests/test_routing.py::test_build_values_dict[int-value2-TypeError] PASSED tests/test_routing.py::test_build_values_dict[list-value3-/1] PASSED tests/test_routing.py::test_build_values_dict[list-value4-/1.None.2] PASSED tests/test_routing.py::test_build_values_dict[list-1-TypeError] PASSED tests/test_routing.py::test_build_values_multidict[int-1-/1] PASSED tests/test_routing.py::test_build_values_multidict[int-value1-/1] PASSED tests/test_routing.py::test_build_values_multidict[int-value2-BuildError] PASSED tests/test_routing.py::test_build_values_multidict[int-None-TypeError] PASSED tests/test_routing.py::test_build_values_multidict[int-value4-TypeError] PASSED tests/test_routing.py::test_build_values_multidict[list-1-TypeError] PASSED tests/test_routing.py::test_build_values_multidict[list-value6-TypeError] PASSED tests/test_routing.py::test_build_values_multidict[list-value7-/1] PASSED tests/test_routing.py::test_build_values_multidict[list-value8-/1.None.2] PASSED tests/test_routing.py::test_build_append_unknown_dict[None-] PASSED tests/test_routing.py::test_build_append_unknown_dict[value1-] PASSED tests/test_routing.py::test_build_append_unknown_dict[value2-] PASSED tests/test_routing.py::test_build_append_unknown_dict[-?v=] PASSED tests/test_routing.py::test_build_append_unknown_dict[value4-?v=] PASSED tests/test_routing.py::test_build_append_unknown_dict[0-?v=0] PASSED tests/test_routing.py::test_build_append_unknown_dict[1.0-?v=1.0] PASSED tests/test_routing.py::test_build_append_unknown_dict[value7-?v=1&v=2] PASSED tests/test_routing.py::test_build_append_unknown_dict[value8-?v=1&v=2] PASSED tests/test_routing.py::test_build_append_unknown_dict[value9-?v=1&v=&v=2] PASSED tests/test_routing.py::test_build_append_unknown_dict[1+2-?v=1%2B2] PASSED tests/test_routing.py::test_build_append_unknown_multidict[None-] PASSED tests/test_routing.py::test_build_append_unknown_multidict[value1-] PASSED tests/test_routing.py::test_build_append_unknown_multidict[value2-] PASSED tests/test_routing.py::test_build_append_unknown_multidict[-?v=] PASSED tests/test_routing.py::test_build_append_unknown_multidict[value4-?v=] PASSED tests/test_routing.py::test_build_append_unknown_multidict[0-?v=0] PASSED tests/test_routing.py::test_build_append_unknown_multidict[1.0-?v=1.0] PASSED tests/test_routing.py::test_build_append_unknown_multidict[value7-?v=1&v=2] PASSED tests/test_routing.py::test_build_append_unknown_multidict[value8-?v=1&v=2] PASSED tests/test_routing.py::test_build_append_unknown_multidict[value9-?v=1&v=&v=2] PASSED tests/test_routing.py::test_build_drop_none PASSED tests/test_routing.py::test_method_fallback PASSED tests/test_routing.py::test_implicit_head PASSED tests/test_routing.py::test_pass_str_as_router_methods PASSED tests/test_routing.py::test_protocol_joining_bug PASSED tests/test_routing.py::test_allowed_methods_querying PASSED tests/test_routing.py::test_external_building_with_port PASSED tests/test_routing.py::test_external_building_with_port_bind_to_environ PASSED tests/test_routing.py::test_external_building_with_port_bind_to_environ_wrong_servername PASSED tests/test_routing.py::test_bind_long_idna_name_with_port PASSED tests/test_routing.py::test_converter_parser PASSED tests/test_routing.py::test_alias_redirects PASSED tests/test_routing.py::test_double_defaults[] PASSED tests/test_routing.py::test_double_defaults[/aaa] PASSED tests/test_routing.py::test_host_matching PASSED tests/test_routing.py::test_host_matching_building PASSED tests/test_routing.py::test_server_name_casing PASSED tests/test_routing.py::test_redirect_request_exception_code PASSED tests/test_routing.py::test_redirect_path_quoting PASSED tests/test_routing.py::test_unicode_rules PASSED tests/test_routing.py::test_empty_path_info PASSED tests/test_routing.py::test_both_bind_and_match_path_info_are_none PASSED tests/test_routing.py::test_map_repr PASSED tests/test_routing.py::test_empty_subclass_rules_with_custom_kwargs PASSED tests/test_routing.py::test_finding_closest_match_by_endpoint PASSED tests/test_routing.py::test_finding_closest_match_by_values PASSED tests/test_routing.py::test_finding_closest_match_by_method PASSED tests/test_routing.py::test_finding_closest_match_when_none_exist PASSED tests/test_routing.py::test_error_message_without_suggested_rule PASSED tests/test_routing.py::test_error_message_suggestion PASSED tests/test_routing.py::test_no_memory_leak_from_Rule_builder PASSED tests/test_routing.py::test_build_url_with_arg_self PASSED tests/test_routing.py::test_build_url_with_arg_keyword PASSED tests/test_routing.py::test_build_url_same_endpoint_multiple_hosts PASSED tests/test_routing.py::test_rule_websocket_methods PASSED tests/test_routing.py::test_path_weighting PASSED tests/test_routing.py::test_newline_match PASSED tests/test_routing.py::test_weighting PASSED tests/test_routing.py::test_strict_slashes_false PASSED tests/test_routing.py::test_invalid_rule PASSED tests/test_routing.py::test_multiple_converters_per_part PASSED tests/test_routing.py::test_static_regex_escape PASSED tests/test_routing.py::test_regex PASSED tests/test_security.py::test_default_password_method PASSED tests/test_security.py::test_scrypt PASSED tests/test_security.py::test_pbkdf2 PASSED tests/test_security.py::test_salted_hashes PASSED tests/test_security.py::test_require_salt PASSED tests/test_security.py::test_invalid_method PASSED tests/test_security.py::test_safe_join[b/c-a/b/c] PASSED tests/test_security.py::test_safe_join[../b/c-None] PASSED tests/test_security.py::test_safe_join[b\\c-a/b\\c] PASSED tests/test_security.py::test_safe_join[//b/c-None] PASSED tests/test_security.py::test_safe_join_os_sep PASSED tests/test_security.py::test_safe_join_empty_trusted PASSED tests/test_send_file.py::test_path[path0] PASSED tests/test_send_file.py::test_path[$(@D)/tests/res/index.html] PASSED tests/test_send_file.py::test_x_sendfile PASSED tests/test_send_file.py::test_last_modified PASSED tests/test_send_file.py::test_object[0] PASSED tests/test_send_file.py::test_object[1] PASSED tests/test_send_file.py::test_object_without_mimetype PASSED tests/test_send_file.py::test_object_mimetype_from_name PASSED tests/test_send_file.py::test_text_mode_fails[0] PASSED tests/test_send_file.py::test_text_mode_fails[1] PASSED tests/test_send_file.py::test_disposition_name[False-inline] PASSED tests/test_send_file.py::test_disposition_name[True-attachment] PASSED tests/test_send_file.py::test_object_attachment_requires_name PASSED tests/test_send_file.py::test_non_ascii_name[index.html-index.html-None] PASSED tests/test_send_file.py::test_non_ascii_name[\xd1and\xfa\uff0fping\xfcino.txt-"Nandu/pinguino.txt"-%C3%91and%C3%BA%EF%BC%8Fping%C3%BCino.txt] PASSED tests/test_send_file.py::test_non_ascii_name[V\xf6gel.txt-Vogel.txt-V%C3%B6gel.txt] PASSED tests/test_send_file.py::test_non_ascii_name[\u0442\u0435:/\u0441\u0442-":/"-%D1%82%D0%B5%3A%2F%D1%81%D1%82] PASSED tests/test_send_file.py::test_non_ascii_name[(\u0442\u0435\u0441\u0442.txt-"(.txt"-%28%D1%82%D0%B5%D1%81%D1%82.txt] PASSED tests/test_send_file.py::test_non_ascii_name[(test.txt-"(test.txt"-None] PASSED tests/test_send_file.py::test_no_cache_conditional_default PASSED tests/test_send_file.py::test_max_age[0-False] PASSED tests/test_send_file.py::test_max_age[60-True] PASSED tests/test_send_file.py::test_etag PASSED tests/test_send_file.py::test_content_encoding[True] PASSED tests/test_send_file.py::test_content_encoding[False] PASSED tests/test_send_file.py::test_from_directory[$(@D)/tests/res-test.txt] PASSED tests/test_send_file.py::test_from_directory[directory1-path1] PASSED tests/test_send_file.py::test_from_directory_not_found[../res/test.txt] PASSED tests/test_send_file.py::test_from_directory_not_found[nothing.txt] PASSED tests/test_send_file.py::test_from_directory_not_found[null\x00.txt] PASSED tests/test_send_file.py::test_root_path PASSED tests/test_send_file.py::test_max_age_callable PASSED tests/test_serving.py::test_watchdog_reloader_ignores_opened PASSED tests/test_serving.py::test_watchdog_reloader_ignores_closed_no_write PASSED tests/test_serving.py::test_windows_get_args_for_reloading PASSED tests/test_serving.py::test_exclude_patterns[_find_stat_paths] PASSED tests/test_serving.py::test_exclude_patterns[_find_watchdog_paths] PASSED tests/test_serving.py::test_port_is_int PASSED tests/test_test.py::test_cookie_forging PASSED tests/test_test.py::test_set_cookie_app PASSED tests/test_test.py::test_cookiejar_stores_cookie PASSED tests/test_test.py::test_no_initial_cookie PASSED tests/test_test.py::test_resent_cookie PASSED tests/test_test.py::test_disable_cookies PASSED tests/test_test.py::test_cookie_for_different_path PASSED tests/test_test.py::test_cookie_default_path PASSED tests/test_test.py::test_environ_builder_basics PASSED tests/test_test.py::test_environ_builder_data PASSED tests/test_test.py::test_environ_builder_json PASSED tests/test_test.py::test_environ_builder_headers PASSED tests/test_test.py::test_environ_builder_headers_content_type PASSED tests/test_test.py::test_envrion_builder_multiple_headers PASSED tests/test_test.py::test_environ_builder_paths PASSED tests/test_test.py::test_environ_builder_content_type PASSED tests/test_test.py::test_basic_auth PASSED tests/test_test.py::test_auth_object PASSED tests/test_test.py::test_environ_builder_stream_switch PASSED tests/test_test.py::test_environ_builder_unicode_file_mix PASSED tests/test_test.py::test_environ_builder_empty_file PASSED tests/test_test.py::test_create_environ PASSED tests/test_test.py::test_create_environ_query_string_error PASSED tests/test_test.py::test_builder_from_environ PASSED tests/test_test.py::test_file_closing PASSED tests/test_test.py::test_follow_redirect PASSED tests/test_test.py::test_follow_local_redirect PASSED tests/test_test.py::test_follow_redirect_body[302-False] PASSED tests/test_test.py::test_follow_redirect_body[301-False] PASSED tests/test_test.py::test_follow_redirect_body[307-True] PASSED tests/test_test.py::test_follow_redirect_body[308-True] PASSED tests/test_test.py::test_follow_external_redirect PASSED tests/test_test.py::test_follow_external_redirect_on_same_subdomain PASSED tests/test_test.py::test_follow_redirect_loop PASSED tests/test_test.py::test_follow_redirect_non_root_base_url PASSED tests/test_test.py::test_follow_redirect_exhaust_intermediate PASSED tests/test_test.py::test_redirects_are_tracked PASSED tests/test_test.py::test_cookie_across_redirect PASSED tests/test_test.py::test_path_info_script_name_unquoting PASSED tests/test_test.py::test_multi_value_submit PASSED tests/test_test.py::test_iri_support PASSED tests/test_test.py::test_run_wsgi_apps[True-True] PASSED tests/test_test.py::test_run_wsgi_apps[True-False] PASSED tests/test_test.py::test_run_wsgi_apps[False-True] PASSED tests/test_test.py::test_run_wsgi_apps[False-False] PASSED tests/test_test.py::test_lazy_start_response_empty_response_app[True-True] PASSED tests/test_test.py::test_lazy_start_response_empty_response_app[True-False] PASSED tests/test_test.py::test_lazy_start_response_empty_response_app[False-True] PASSED tests/test_test.py::test_lazy_start_response_empty_response_app[False-False] PASSED tests/test_test.py::test_run_wsgi_app_closing_iterator PASSED tests/test_test.py::test_multiple_cookies PASSED tests/test_test.py::test_correct_open_invocation_on_redirect PASSED tests/test_test.py::test_correct_encoding PASSED tests/test_test.py::test_full_url_requests_with_args PASSED tests/test_test.py::test_delete_requests_with_form PASSED tests/test_test.py::test_post_with_file_descriptor PASSED tests/test_test.py::test_content_type PASSED tests/test_test.py::test_raw_request_uri PASSED tests/test_test.py::test_no_content_type_header_addition PASSED tests/test_test.py::test_client_response_wrapper PASSED tests/test_urls.py::test_iri_support PASSED tests/test_urls.py::test_iri_safe_quoting PASSED tests/test_urls.py::test_quoting_of_local_urls PASSED tests/test_urls.py::test_iri_to_uri_idempotence_ascii_only PASSED tests/test_urls.py::test_iri_to_uri_idempotence_non_ascii PASSED tests/test_urls.py::test_uri_to_iri_idempotence_ascii_only PASSED tests/test_urls.py::test_uri_to_iri_idempotence_non_ascii PASSED tests/test_urls.py::test_iri_to_uri_to_iri PASSED tests/test_urls.py::test_uri_to_iri_to_uri PASSED tests/test_urls.py::test_uri_iri_normalization[http://f\xf6\xf1.com/\u2610/fred?utf8=\u2713] PASSED tests/test_urls.py::test_uri_iri_normalization[http://xn--f-rgao.com/\u2610/fred?utf8=\u2713] PASSED tests/test_urls.py::test_uri_iri_normalization[http://xn--f-rgao.com/%E2%98%90/fred?utf8=%E2%9C%93_0] PASSED tests/test_urls.py::test_uri_iri_normalization[http://xn--f-rgao.com/%E2%98%90/fred?utf8=%E2%9C%93_1] PASSED tests/test_urls.py::test_uri_iri_normalization[http://f\xf6\xf1.com/\u2610/fred?utf8=%E2%9C%93] PASSED tests/test_urls.py::test_uri_to_iri_dont_unquote_space PASSED tests/test_urls.py::test_iri_to_uri_dont_quote_valid_code_points PASSED tests/test_urls.py::test_itms_services PASSED tests/test_utils.py::test_redirect[http://example.com-None-http://example.com] PASSED tests/test_utils.py::test_redirect[/f\xfc\xfcb\xe4r-305-/f%C3%BC%C3%BCb%C3%A4r] PASSED tests/test_utils.py::test_redirect[http://\u2603.example.com/-307-http://xn--n3h.example.com/] PASSED tests/test_utils.py::test_redirect[itms-services://?url=abc-None-itms-services://?url=abc] PASSED tests/test_utils.py::test_redirect_xss PASSED tests/test_utils.py::test_redirect_with_custom_response_class PASSED tests/test_utils.py::test_cached_property PASSED tests/test_utils.py::test_can_set_cached_property PASSED tests/test_utils.py::test_invalidate_cached_property PASSED tests/test_utils.py::test_inspect_treats_cached_property_as_property PASSED tests/test_utils.py::test_environ_property PASSED tests/test_utils.py::test_import_string PASSED tests/test_utils.py::test_import_string_provides_traceback PASSED tests/test_utils.py::test_import_string_attribute_error PASSED tests/test_utils.py::test_find_modules PASSED tests/test_utils.py::test_header_set_duplication_bug PASSED tests/test_utils.py::test_append_slash_redirect[False-foo-http://example.org/app-http://example.org/app/foo/] PASSED tests/test_utils.py::test_append_slash_redirect[False-/foo-http://example.org/app-http://example.org/app/foo/] PASSED tests/test_utils.py::test_append_slash_redirect[False-/foo/bar-http://example.org/-http://example.org/foo/bar/] PASSED tests/test_utils.py::test_append_slash_redirect[False-/foo/bar-http://example.org/app-http://example.org/app/foo/bar/] PASSED tests/test_utils.py::test_append_slash_redirect[False-/foo?baz-http://example.org/-http://example.org/foo/?baz] PASSED tests/test_utils.py::test_append_slash_redirect[False-/foo/-http://example.org/-http://example.org/foo/] PASSED tests/test_utils.py::test_append_slash_redirect[False-/foo/-http://example.org/app-http://example.org/app/foo/] PASSED tests/test_utils.py::test_append_slash_redirect[False-/-http://example.org/-http://example.org/] PASSED tests/test_utils.py::test_append_slash_redirect[False-/-http://example.org/app-http://example.org/app/] PASSED tests/test_utils.py::test_append_slash_redirect[True-foo-http://example.org/app-http://example.org/app/foo/] PASSED tests/test_utils.py::test_append_slash_redirect[True-/foo-http://example.org/app-http://example.org/app/foo/] PASSED tests/test_utils.py::test_append_slash_redirect[True-/foo/bar-http://example.org/-http://example.org/foo/bar/] PASSED tests/test_utils.py::test_append_slash_redirect[True-/foo/bar-http://example.org/app-http://example.org/app/foo/bar/] PASSED tests/test_utils.py::test_append_slash_redirect[True-/foo?baz-http://example.org/-http://example.org/foo/?baz] PASSED tests/test_utils.py::test_append_slash_redirect[True-/foo/-http://example.org/-http://example.org/foo/] PASSED tests/test_utils.py::test_append_slash_redirect[True-/foo/-http://example.org/app-http://example.org/app/foo/] PASSED tests/test_utils.py::test_append_slash_redirect[True-/-http://example.org/-http://example.org/] PASSED tests/test_utils.py::test_append_slash_redirect[True-/-http://example.org/app-http://example.org/app/] PASSED tests/test_utils.py::test_cached_property_doc PASSED tests/test_utils.py::test_secure_filename PASSED tests/test_wrappers.py::test_base_request PASSED tests/test_wrappers.py::test_query_string_is_bytes PASSED tests/test_wrappers.py::test_request_repr PASSED tests/test_wrappers.py::test_access_route PASSED tests/test_wrappers.py::test_url_request_descriptors PASSED tests/test_wrappers.py::test_url_request_descriptors_query_quoting PASSED tests/test_wrappers.py::test_url_request_descriptors_hosts PASSED tests/test_wrappers.py::test_authorization PASSED tests/test_wrappers.py::test_authorization_with_unicode PASSED tests/test_wrappers.py::test_request_application PASSED tests/test_wrappers.py::test_request_access_control PASSED tests/test_wrappers.py::test_response_access_control PASSED tests/test_wrappers.py::test_base_response PASSED tests/test_wrappers.py::test_response_set_status_code[200-200 OK] PASSED tests/test_wrappers.py::test_response_set_status_code[404-404 NOT FOUND] PASSED tests/test_wrappers.py::test_response_set_status_code[588-588 UNKNOWN] PASSED tests/test_wrappers.py::test_response_set_status_code[999-999 UNKNOWN] PASSED tests/test_wrappers.py::test_response_set_status[404-404-404 NOT FOUND] PASSED tests/test_wrappers.py::test_response_set_status[588-588-588 UNKNOWN] PASSED tests/test_wrappers.py::test_response_set_status[999-999-999 UNKNOWN] PASSED tests/test_wrappers.py::test_response_set_status[200 OK-200-200 OK] PASSED tests/test_wrappers.py::test_response_set_status[999 WTF-999-999 WTF] PASSED tests/test_wrappers.py::test_response_set_status[wtf-0-0 wtf] PASSED tests/test_wrappers.py::test_response_set_status[200 TEA POT-200-200 TEA POT] PASSED tests/test_wrappers.py::test_response_set_status[200-200-200 OK] PASSED tests/test_wrappers.py::test_response_set_status[400-400-400 BAD REQUEST] PASSED tests/test_wrappers.py::test_response_init_status_empty_string PASSED tests/test_wrappers.py::test_type_forcing PASSED tests/test_wrappers.py::test_accept PASSED tests/test_wrappers.py::test_etag_request PASSED tests/test_wrappers.py::test_user_agent PASSED tests/test_wrappers.py::test_stream_wrapping PASSED tests/test_wrappers.py::test_data_descriptor_triggers_parsing PASSED tests/test_wrappers.py::test_get_data_method_parsing_caching_behavior PASSED tests/test_wrappers.py::test_etag_response PASSED tests/test_wrappers.py::test_etag_response_412 PASSED tests/test_wrappers.py::test_range_request_basic PASSED tests/test_wrappers.py::test_range_request_out_of_bound PASSED tests/test_wrappers.py::test_range_request_with_file PASSED tests/test_wrappers.py::test_range_request_with_complete_file PASSED tests/test_wrappers.py::test_range_request_without_complete_length[None] PASSED tests/test_wrappers.py::test_range_request_without_complete_length[0] PASSED tests/test_wrappers.py::test_invalid_range_request PASSED tests/test_wrappers.py::test_etag_response_freezing PASSED tests/test_wrappers.py::test_authenticate PASSED tests/test_wrappers.py::test_authenticate_quoted_qop PASSED tests/test_wrappers.py::test_response_stream PASSED tests/test_wrappers.py::test_common_response_descriptors PASSED tests/test_wrappers.py::test_common_request_descriptors PASSED tests/test_wrappers.py::test_request_mimetype_always_lowercase PASSED tests/test_wrappers.py::test_shallow_mode PASSED tests/test_wrappers.py::test_form_parsing_failed PASSED tests/test_wrappers.py::test_file_closing PASSED tests/test_wrappers.py::test_file_closing_with PASSED tests/test_wrappers.py::test_response_streamed PASSED tests/test_wrappers.py::test_response_iter_wrapping PASSED tests/test_wrappers.py::test_response_freeze PASSED tests/test_wrappers.py::test_response_content_length_uses_encode PASSED tests/test_wrappers.py::test_other_method_payload PASSED tests/test_wrappers.py::test_urlfication PASSED tests/test_wrappers.py::test_new_response_iterator_behavior PASSED tests/test_wrappers.py::test_form_data_ordering PASSED tests/test_wrappers.py::test_values PASSED tests/test_wrappers.py::test_storage_classes PASSED tests/test_wrappers.py::test_response_headers_passthrough PASSED tests/test_wrappers.py::test_response_304_no_content_length PASSED tests/test_wrappers.py::test_ranges PASSED tests/test_wrappers.py::test_csp PASSED tests/test_wrappers.py::test_auto_content_length PASSED tests/test_wrappers.py::test_stream_content_length PASSED tests/test_wrappers.py::test_disabled_auto_content_length PASSED tests/test_wrappers.py::test_location_header_autocorrect[False-/test-/test] PASSED tests/test_wrappers.py::test_location_header_autocorrect[False-/\\\\test.example?q-/%5C%5Ctest.example?q] PASSED tests/test_wrappers.py::test_location_header_autocorrect[True-/test-http://localhost/test] PASSED tests/test_wrappers.py::test_location_header_autocorrect[True-test-http://localhost/a/b/test] PASSED tests/test_wrappers.py::test_location_header_autocorrect[True-./test-http://localhost/a/b/test] PASSED tests/test_wrappers.py::test_location_header_autocorrect[True-../test-http://localhost/a/test] PASSED tests/test_wrappers.py::test_204_and_1XX_response_has_no_content_length PASSED tests/test_wrappers.py::test_malformed_204_response_has_no_content_length PASSED tests/test_wrappers.py::test_request_method_case_sensitivity PASSED tests/test_wrappers.py::test_write_length PASSED tests/test_wrappers.py::test_stream_zip PASSED tests/test_wrappers.py::TestSetCookie::test_secure PASSED tests/test_wrappers.py::TestSetCookie::test_httponly PASSED tests/test_wrappers.py::TestSetCookie::test_secure_and_httponly PASSED tests/test_wrappers.py::TestSetCookie::test_samesite PASSED tests/test_wrappers.py::TestJSON::test_request PASSED tests/test_wrappers.py::TestJSON::test_response PASSED tests/test_wrappers.py::TestJSON::test_bad_content_type PASSED tests/test_wrappers.py::TestJSON::test_bad_data PASSED tests/test_wrappers.py::TestJSON::test_cache_disabled PASSED tests/test_wrappers.py::test_response_coop PASSED tests/test_wrappers.py::test_response_coep PASSED tests/test_wsgi.py::test_get_host[host] PASSED tests/test_wsgi.py::test_get_host[host, strip http port] PASSED tests/test_wsgi.py::test_get_host[host, strip https port] PASSED tests/test_wsgi.py::test_get_host[host, custom port] PASSED tests/test_wsgi.py::test_get_host[prefer host] PASSED tests/test_wsgi.py::test_get_host[name, ignore http port] PASSED tests/test_wsgi.py::test_get_host[name, ignore https port] PASSED tests/test_wsgi.py::test_get_host[name, custom port] PASSED tests/test_wsgi.py::test_get_host[ignore x-forwarded-host] PASSED tests/test_wsgi.py::test_get_host_validate_trusted_hosts PASSED tests/test_wsgi.py::test_responder PASSED tests/test_wsgi.py::test_path_info_and_script_name_fetching PASSED tests/test_wsgi.py::test_limited_stream PASSED tests/test_wsgi.py::test_limited_stream_json_load PASSED tests/test_wsgi.py::test_limited_stream_disconnection PASSED tests/test_wsgi.py::test_limited_stream_read_with_raw_io PASSED tests/test_wsgi.py::test_get_host_fallback PASSED tests/test_wsgi.py::test_get_current_url_unicode PASSED tests/test_wsgi.py::test_get_current_url_invalid_utf8 PASSED tests/test_wsgi.py::test_range_wrapper PASSED tests/test_wsgi.py::test_closing_iterator PASSED ======== 923 passed, 25 deselected ======== py$(PYV): OK congratulations :)