Skip to content

Commit 82b218f

Browse files
authored
bpo-44647: Fix test_httpservers failing on Unicode characters in os.environ on Windows (GH-27161)
GH-23638 introduced a new test for Accept: headers in CGI HTTP servers. This test serializes all of os.environ on the server side. For non-UTF8 locales this can fail for some Unicode characters found in environment variables. This change fixes the HTTP_ACCEPT test.
1 parent a86f7da commit 82b218f

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

Lib/test/test_httpservers.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -593,9 +593,18 @@ def test_html_escape_filename(self):
593593
#!%s
594594
import os
595595
596-
print("Content-type: text/plain")
596+
print("X-ambv: was here")
597+
print("Content-type: text/html")
597598
print()
598-
print(repr(os.environ))
599+
print("<pre>")
600+
for k, v in os.environ.items():
601+
try:
602+
k.encode('ascii')
603+
v.encode('ascii')
604+
except UnicodeEncodeError:
605+
continue # see: BPO-44647
606+
print(f"{k}={v}")
607+
print("</pre>")
599608
"""
600609

601610

@@ -850,8 +859,8 @@ def test_accept(self):
850859
with self.subTest(headers):
851860
res = self.request('/cgi-bin/file6.py', 'GET', headers=headers)
852861
self.assertEqual(http.HTTPStatus.OK, res.status)
853-
expected = f"'HTTP_ACCEPT': {expected!r}"
854-
self.assertIn(expected.encode('ascii'), res.read())
862+
expected = f"HTTP_ACCEPT={expected}".encode('ascii')
863+
self.assertIn(expected, res.read())
855864

856865

857866
class SocketlessRequestHandler(SimpleHTTPRequestHandler):

0 commit comments

Comments
 (0)