$(PYTHON_DIR)/vendor-packages/setuptools_scm/git.py:427: UserWarning: git archive did not support describe output warnings.warn("git archive did not support describe output") $(PYTHON_DIR)/vendor-packages/setuptools_scm/git.py:445: UserWarning: unprocessed git archival found (no export subst applied) warnings.warn("unprocessed git archival found (no export subst applied)") py$(PYV): remove tox env folder $(@D)/.tox/py$(PYV) py$(PYV): commands_pre[0]> $(PYTHON) -bb -E -s -m OpenSSL.debug pyOpenSSL: 25.3.0 cryptography: 45.0.7 cffi: 1.17.1 cryptography's compiled against OpenSSL: OpenSSL 3.5.2 5 Aug 2025 cryptography's linked OpenSSL: OpenSSL 3.5.3 16 Sep 2025 Python's OpenSSL: OpenSSL 3.5.3 16 Sep 2025 Python executable: $(PYTHON) Python version: 3.9.23 (main, Jun 9 2025, 15:00:38) [GCC 14.3.0] Platform: sunos5 sys.path: ['$(@D)', '/usr/lib/python39.zip', '$(PYTHON_DIR)', '$(PYTHON_DIR)/lib-dynload', '$(PYTHON_DIR)/site-packages', '$(PYTHON_DIR)/vendor-packages'] py$(PYV): commands[0]> $(PYTHON) -bb -E -s -m pytest --cov-report=html:$(@D)/.tox/py$(PYV)/tmp/htmlcov/ ============================= test session starts ============================== platform sunos5 -- Python $(PYTHON_VERSION).X -- $(PYTHON) cachedir: .tox/py$(PYV)/.pytest_cache rootdir: $(@D) configfile: pytest.ini testpaths: cheroot/test/ X workers [187 items] scheduling tests via LoadScheduling cheroot/test/test__compat.py::test_compat_functions_negative_nonnative[ntob] PASSED cheroot/test/test__compat.py::test_compat_functions_negative_nonnative[ntou] PASSED cheroot/test/test__compat.py::test_compat_functions_positive[bton-bar-bar] PASSED cheroot/test/test__compat.py::test_compat_functions_positive[ntob-bar-bar] PASSED cheroot/test/test__compat.py::test_compat_functions_positive[ntou-bar-bar] PASSED cheroot/test/test__compat.py::test_extract_bytes[input_argument1-asdfgh] PASSED cheroot/test/test__compat.py::test_extract_bytes[qwerty-qwerty] PASSED cheroot/test/test__compat.py::test_extract_bytes_invalid PASSED cheroot/test/test__compat.py::test_ntou_escape PASSED cheroot/test/test_cli.py::test_Aplication_resolve[None-application] PASSED cheroot/test/test_cli.py::test_Aplication_resolve[application-application] PASSED cheroot/test/test_cli.py::test_Aplication_resolve[main-main] PASSED cheroot/test/test_cli.py::test_parse_wsgi_bind_addr[/tmp/cheroot.sock-/tmp/cheroot.sock] PASSED cheroot/test/test_cli.py::test_parse_wsgi_bind_addr[/tmp/some-random-file-name-/tmp/some-random-file-name] PASSED cheroot/test/test_cli.py::test_parse_wsgi_bind_addr[123456789-expected_bind_addr5] PASSED cheroot/test/test_cli.py::test_parse_wsgi_bind_addr[192.168.1.1:80-expected_bind_addr0] PASSED cheroot/test/test_cli.py::test_parse_wsgi_bind_addr[@cheroot-\x00cheroot] PASSED cheroot/test/test_cli.py::test_parse_wsgi_bind_addr[[::1]:8000-expected_bind_addr1] PASSED cheroot/test/test_cli.py::test_parse_wsgi_bind_addr[foo-expected_bind_addr4] PASSED cheroot/test/test_cli.py::test_parse_wsgi_bind_addr[foo@bar:5000-expected_bind_addr3] PASSED cheroot/test/test_cli.py::test_parse_wsgi_bind_addr[localhost:5000-expected_bind_addr2] PASSED cheroot/test/test_conn.py::test_100_Continue PASSED cheroot/test/test_conn.py::test_598 XFAIL cheroot/test/test_conn.py::test_Chunked_Encoding XFAIL cheroot/test/test_conn.py::test_Content_Length_in PASSED cheroot/test/test_conn.py::test_Content_Length_not_int PASSED cheroot/test/test_conn.py::test_Content_Length_out[/wrong_cl_buffered-500-The requested resource returned more bytes than the declared Content-Length.] PASSED cheroot/test/test_conn.py::test_Content_Length_out[/wrong_cl_unbuffered-200-I too] PASSED cheroot/test/test_conn.py::test_HTTP11_Timeout[False] PASSED cheroot/test/test_conn.py::test_HTTP11_Timeout[True] PASSED cheroot/test/test_conn.py::test_HTTP11_Timeout_after_request PASSED cheroot/test/test_conn.py::test_HTTP11_persistent_connections PASSED cheroot/test/test_conn.py::test_HTTP11_pipelining PASSED cheroot/test/test_conn.py::test_No_CRLF[\n\n] PASSED cheroot/test/test_conn.py::test_No_CRLF[\r\n\n] PASSED cheroot/test/test_conn.py::test_No_Message_Body PASSED cheroot/test/test_conn.py::test_broken_connection_during_http_communication_fallback PASSED cheroot/test/test_conn.py::test_broken_connection_during_tcp_fin[BrokenPipeError(EPIPE)] PASSED cheroot/test/test_conn.py::test_broken_connection_during_tcp_fin[BrokenPipeError(ESHUTDOWN)] PASSED cheroot/test/test_conn.py::test_broken_connection_during_tcp_fin[ConnectionResetError(ECONNRESET)] PASSED cheroot/test/test_conn.py::test_broken_connection_during_tcp_fin[RuntimeError(666)] PASSED cheroot/test/test_conn.py::test_broken_connection_during_tcp_fin[real socket.error(ENOTCONN)] PASSED cheroot/test/test_conn.py::test_broken_connection_during_tcp_fin[simulated socket.error(ENOTCONN)] PASSED cheroot/test/test_conn.py::test_broken_connection_during_tcp_fin[socket.error(-1)] PASSED cheroot/test/test_conn.py::test_broken_connection_during_tcp_fin[socket.error(ECONNRESET)] PASSED cheroot/test/test_conn.py::test_broken_connection_during_tcp_fin[socket.error(EPIPE)] PASSED cheroot/test/test_conn.py::test_broken_connection_during_tcp_fin[socket.error(ESHUTDOWN)] PASSED cheroot/test/test_conn.py::test_invalid_selected_connection PASSED cheroot/test/test_conn.py::test_kb_int_from_http_handler PASSED cheroot/test/test_conn.py::test_keepalive[HTTP/1.0] PASSED cheroot/test/test_conn.py::test_keepalive[HTTP/1.1] PASSED cheroot/test/test_conn.py::test_keepalive_conn_management PASSED cheroot/test/test_conn.py::test_readall_or_close[0] PASSED cheroot/test/test_conn.py::test_readall_or_close[1001] PASSED cheroot/test/test_conn.py::test_remains_alive_post_unhandled_exception PASSED cheroot/test/test_conn.py::test_streaming_10[False] PASSED cheroot/test/test_conn.py::test_streaming_10[True] PASSED cheroot/test/test_conn.py::test_streaming_11[False] PASSED cheroot/test/test_conn.py::test_streaming_11[True] PASSED cheroot/test/test_conn.py::test_unhandled_exception_in_request_handler PASSED cheroot/test/test_core.py::test_content_length_required PASSED cheroot/test/test_core.py::test_garbage_in PASSED cheroot/test/test_core.py::test_http_connect_request PASSED cheroot/test/test_core.py::test_large_request XFAIL cheroot/test/test_core.py::test_malformed_header PASSED cheroot/test/test_core.py::test_malformed_http_method PASSED cheroot/test/test_core.py::test_malformed_request_line[GET / HTTP/1-400-Malformed Request-Line: bad version] PASSED cheroot/test/test_core.py::test_malformed_request_line[GET / HTTP/2.15-505-Cannot fulfill request] PASSED cheroot/test/test_core.py::test_malformed_request_line[GET / HTTPS/1.1-400-Malformed Request-Line: bad protocol] PASSED cheroot/test/test_core.py::test_malformed_request_line[GET /-400-Malformed Request-Line] PASSED cheroot/test/test_core.py::test_no_content_length PASSED cheroot/test/test_core.py::test_normal_request PASSED cheroot/test/test_core.py::test_parse_acceptable_uri[/%D0%AE%D1%85%D1%85%D1%83%D1%83%D1%83?%D1%97=%D0%B9%D0%BE] PASSED cheroot/test/test_core.py::test_parse_acceptable_uri[/hello] PASSED cheroot/test/test_core.py::test_parse_acceptable_uri[/query_string?test=True] PASSED cheroot/test/test_core.py::test_parse_no_leading_slash_invalid[\u043f\u0440\u0438\u0432\u0456\u0442] PASSED cheroot/test/test_core.py::test_parse_no_leading_slash_invalid[hello] PASSED cheroot/test/test_core.py::test_parse_uri_absolute_uri PASSED cheroot/test/test_core.py::test_parse_uri_asterisk_uri PASSED cheroot/test/test_core.py::test_parse_uri_fragment_uri PASSED cheroot/test/test_core.py::test_parse_uri_invalid_uri PASSED cheroot/test/test_core.py::test_parse_uri_unsafe_uri PASSED cheroot/test/test_core.py::test_query_string_request PASSED cheroot/test/test_core.py::test_request_line_split_issue_1220 PASSED cheroot/test/test_core.py::test_send_header_before_closing PASSED cheroot/test/test_dispatch.py::test_dispatch_no_script_name PASSED cheroot/test/test_errors.py::test_plat_specific_errors[err_names0-err_nums0] PASSED cheroot/test/test_errors.py::test_plat_specific_errors[err_names1-err_nums1] PASSED cheroot/test/test_makefile.py::test_bytes_read PASSED cheroot/test/test_makefile.py::test_bytes_written PASSED cheroot/test/test_server.py::test_bind_addr_inet[0.0.0.0] PASSED cheroot/test/test_server.py::test_bind_addr_inet[::] PASSED cheroot/test/test_server.py::test_bind_addr_unix[abstract] SKIPPED cheroot/test/test_server.py::test_bind_addr_unix[file] PASSED cheroot/test/test_server.py::test_bind_addr_unix_abstract SKIPPED cheroot/test/test_server.py::test_high_number_of_file_descriptors[1024] SKIPPED cheroot/test/test_server.py::test_high_number_of_file_descriptors[2048] SKIPPED cheroot/test/test_server.py::test_overload_results_in_suitable_http_error PASSED cheroot/test/test_server.py::test_peercreds_unix_sock[abstract] SKIPPED cheroot/test/test_server.py::test_peercreds_unix_sock[file] SKIPPED cheroot/test/test_server.py::test_peercreds_unix_sock_with_lookup[abstract] SKIPPED cheroot/test/test_server.py::test_peercreds_unix_sock_with_lookup[file] SKIPPED cheroot/test/test_server.py::test_prepare_makes_server_ready PASSED cheroot/test/test_server.py::test_reuse_port[0.0.0.0] SKIPPED cheroot/test/test_server.py::test_reuse_port[::] SKIPPED cheroot/test/test_server.py::test_server_interrupt[KeyboardInterrupt] PASSED cheroot/test/test_server.py::test_server_interrupt[OSError0] PASSED cheroot/test/test_server.py::test_server_interrupt[OSError1] PASSED cheroot/test/test_server.py::test_server_interrupt[RuntimeError] PASSED cheroot/test/test_server.py::test_serving_is_false_and_stop_returns_after_ctrlc PASSED cheroot/test/test_server.py::test_stop_interrupts_serve PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[-1--1-min=-1 must be > 0] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[-1-0-min=-1 must be > 0] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[-1-1-min=-1 must be > 0] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[-1-2-min=-1 must be > 0] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[0--1-min=0 must be > 0] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[0-0-min=0 must be > 0] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[0-1-min=0 must be > 0] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[0-2-min=0 must be > 0] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[1-0-Expected an integer or the infinity value for the `max` argument but got 0.] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[1-0.5-Expected an integer or the infinity value for the `max` argument but got 0.5.] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[2-0-Expected an integer or the infinity value for the `max` argument but got 0.] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[2-1-Expected an integer or the infinity value for the `max` argument but got '1'.] PASSED cheroot/test/test_server.py::test_threadpool_invalid_threadrange[2-1-max=1 must be > min=2] PASSED cheroot/test/test_server.py::test_threadpool_multistart_validation PASSED cheroot/test/test_server.py::test_threadpool_threadrange_set[1--1-inf] PASSED cheroot/test/test_server.py::test_threadpool_threadrange_set[1--2-inf] PASSED cheroot/test/test_server.py::test_threadpool_threadrange_set[1-1-1] PASSED cheroot/test/test_server.py::test_threadpool_threadrange_set[1-2-2] PASSED cheroot/test/test_server.py::test_threadpool_threadrange_set[1-inf-inf] PASSED cheroot/test/test_server.py::test_threadpool_threadrange_set[2--1-inf] PASSED cheroot/test/test_server.py::test_threadpool_threadrange_set[2--2-inf] PASSED cheroot/test/test_server.py::test_threadpool_threadrange_set[2-2-2] PASSED cheroot/test/test_server.py::test_threadpool_threadrange_set[2-inf-inf] PASSED cheroot/test/test_ssl.py::test_http_over_https_error[0.0.0.0-builtin] PASSED cheroot/test/test_ssl.py::test_http_over_https_error[0.0.0.0-pyopenssl] PASSED cheroot/test/test_ssl.py::test_http_over_https_error[::-builtin] PASSED cheroot/test/test_ssl.py::test_http_over_https_error[::-pyopenssl] PASSED cheroot/test/test_ssl.py::test_https_over_http_error[0.0.0.0] PASSED cheroot/test/test_ssl.py::test_https_over_http_error[::] PASSED cheroot/test/test_ssl.py::test_ssl_adapters[builtin] PASSED cheroot/test/test_ssl.py::test_ssl_adapters[pyopenssl] PASSED cheroot/test/test_ssl.py::test_ssl_env[VerifyMode.CERT_NONE-False-builtin] PASSED cheroot/test/test_ssl.py::test_ssl_env[VerifyMode.CERT_NONE-False-pyopenssl] PASSED cheroot/test/test_ssl.py::test_ssl_env[VerifyMode.CERT_NONE-True-builtin] PASSED cheroot/test/test_ssl.py::test_ssl_env[VerifyMode.CERT_NONE-True-pyopenssl] PASSED cheroot/test/test_ssl.py::test_ssl_env[VerifyMode.CERT_OPTIONAL-False-builtin] PASSED cheroot/test/test_ssl.py::test_ssl_env[VerifyMode.CERT_OPTIONAL-False-pyopenssl] PASSED cheroot/test/test_ssl.py::test_ssl_env[VerifyMode.CERT_OPTIONAL-True-builtin] PASSED cheroot/test/test_ssl.py::test_ssl_env[VerifyMode.CERT_OPTIONAL-True-pyopenssl] PASSED cheroot/test/test_ssl.py::test_ssl_env[VerifyMode.CERT_REQUIRED-True-builtin] PASSED cheroot/test/test_ssl.py::test_ssl_env[VerifyMode.CERT_REQUIRED-True-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_NONE-False-localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_NONE-False-localhost-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_NONE-True-*.localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_NONE-True-*.localhost-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_NONE-True-127.0.0.1-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_NONE-True-127.0.0.1-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_NONE-True-localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_NONE-True-localhost-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_NONE-True-not_localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_NONE-True-not_localhost-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_OPTIONAL-False-localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_OPTIONAL-False-localhost-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_OPTIONAL-True-*.localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_OPTIONAL-True-*.localhost-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_OPTIONAL-True-127.0.0.1-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_OPTIONAL-True-127.0.0.1-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_OPTIONAL-True-localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_OPTIONAL-True-localhost-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_OPTIONAL-True-not_localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_OPTIONAL-True-not_localhost-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_REQUIRED-False-localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_REQUIRED-False-localhost-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_REQUIRED-True-*.localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_REQUIRED-True-*.localhost-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_REQUIRED-True-127.0.0.1-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_REQUIRED-True-127.0.0.1-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_REQUIRED-True-localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_REQUIRED-True-localhost-pyopenssl] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_REQUIRED-True-not_localhost-builtin] PASSED cheroot/test/test_ssl.py::test_tls_client_auth[VerifyMode.CERT_REQUIRED-True-not_localhost-pyopenssl] PASSED cheroot/test/test_wsgi.py::test_connection_keepalive PASSED cheroot/test/test_wsgi.py::test_gateway_start_response_called_twice PASSED cheroot/test/test_wsgi.py::test_gateway_write_needs_start_response_called_before PASSED cheroot/test/webtest.py::cheroot.test.webtest.WebCase.getPage PASSED cheroot/test/webtest.py::cheroot.test.webtest.strip_netloc PASSED ================================ tests coverage ================================ _______________ coverage: platform sunos5, python 3.9.23-final-0 _______________ Coverage HTML written to dir $(@D)/.tox/py$(PYV)/tmp/htmlcov/ Required test coverage of 72.0% reached. Total coverage: 73.65% ============================= slowest 10 durations ============================= =========================== short test summary info ============================ ======== 174 passed, 10 skipped, 3 xfailed ======== py$(PYV): commands_post[0]> $(PYTHON) -bb -E -s -I -Werror -c 'import atexit, os, sys; os.getenv("GITHUB_ACTIONS") == "true" or sys.exit(); import coverage; gh_summary_fd = open(os.environ["GITHUB_STEP_SUMMARY"], encoding="utf-8", mode="a",); atexit.register(gh_summary_fd.close); cov = coverage.Coverage(); cov.load(); cov.report(file=gh_summary_fd, output_format="markdown")' py$(PYV): commands_post[1]> $(PYTHON) -bb -E -s -I -Werror -c 'import os, pathlib, sys; os.getenv("GITHUB_ACTIONS") == "true" or sys.exit(); cov_report_arg_prefix = "--cov-report=xml:"; test_report_arg_prefix = "--junitxml="; cov_reports = [arg[len(cov_report_arg_prefix):] for arg in sys.argv if arg.startswith(cov_report_arg_prefix)]; test_reports = [arg[len(test_report_arg_prefix):] for arg in sys.argv if arg.startswith(test_report_arg_prefix)]; cov_report_file = cov_reports[-1] if cov_reports else None; test_report_file = test_reports[-1] if test_reports else None; gh_output_fd = open(os.environ["GITHUB_OUTPUT"], encoding="utf-8", mode="a",); cov_report_file and print(f"cov-report-files={cov_report_file !s}", file=gh_output_fd); test_report_file and print(f"test-result-files={test_report_file !s}", file=gh_output_fd); print("codecov-flags=pytest", file=gh_output_fd); gh_output_fd.close()' py$(PYV): commands_post[2]> $(PYTHON) -bb -E -s -I -Werror '-cimport pathlib, shlex, sys; cov_html_report_arg_prefix = "--cov-report=html:"; cov_html_reports = [arg[len(cov_html_report_arg_prefix):] for arg in sys.argv if arg.startswith(cov_html_report_arg_prefix)]; cov_html_reports or sys.exit(); cov_html_report_dir = pathlib.Path(cov_html_reports[-1]); index_file = cov_html_report_dir / "index.html";index_file.exists() or sys.exit(); html_url = f"file://{index_file}";browse_cmd = shlex.join(("python3", "-Im", "webbrowser", html_url)); serve_cmd = shlex.join(("python3", "-Im", "http.server", "--directory", str(cov_html_report_dir), "0", )); print(f"\nTo open the HTML coverage report, run\n\n\t{browse_cmd !s}\n");print(f"To serve the HTML coverage report with a local web server, use\n\n\t{serve_cmd !s}\n")' --cov-report=html:$(@D)/.tox/py$(PYV)/tmp/htmlcov/ To open the HTML coverage report, run python3 -Im webbrowser file://$(@D)/.tox/py$(PYV)/tmp/htmlcov/index.html To serve the HTML coverage report with a local web server, use python3 -Im http.server --directory $(@D)/.tox/py$(PYV)/tmp/htmlcov 0 py$(PYV): OK congratulations :)