mirror of https://github.com/python/cpython
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.
This commit is contained in:
parent
a86f7dae0a
commit
82b218f36c
|
@ -593,9 +593,18 @@ cgi_file6 = """\
|
||||||
#!%s
|
#!%s
|
||||||
import os
|
import os
|
||||||
|
|
||||||
print("Content-type: text/plain")
|
print("X-ambv: was here")
|
||||||
|
print("Content-type: text/html")
|
||||||
print()
|
print()
|
||||||
print(repr(os.environ))
|
print("<pre>")
|
||||||
|
for k, v in os.environ.items():
|
||||||
|
try:
|
||||||
|
k.encode('ascii')
|
||||||
|
v.encode('ascii')
|
||||||
|
except UnicodeEncodeError:
|
||||||
|
continue # see: BPO-44647
|
||||||
|
print(f"{k}={v}")
|
||||||
|
print("</pre>")
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
@ -850,8 +859,8 @@ class CGIHTTPServerTestCase(BaseTestCase):
|
||||||
with self.subTest(headers):
|
with self.subTest(headers):
|
||||||
res = self.request('/cgi-bin/file6.py', 'GET', headers=headers)
|
res = self.request('/cgi-bin/file6.py', 'GET', headers=headers)
|
||||||
self.assertEqual(http.HTTPStatus.OK, res.status)
|
self.assertEqual(http.HTTPStatus.OK, res.status)
|
||||||
expected = f"'HTTP_ACCEPT': {expected!r}"
|
expected = f"HTTP_ACCEPT={expected}".encode('ascii')
|
||||||
self.assertIn(expected.encode('ascii'), res.read())
|
self.assertIn(expected, res.read())
|
||||||
|
|
||||||
|
|
||||||
class SocketlessRequestHandler(SimpleHTTPRequestHandler):
|
class SocketlessRequestHandler(SimpleHTTPRequestHandler):
|
||||||
|
|
Loading…
Reference in New Issue