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:
Łukasz Langa 2021-07-15 21:14:24 +02:00 committed by GitHub
parent a86f7dae0a
commit 82b218f36c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 4 deletions

View File

@ -593,9 +593,18 @@ cgi_file6 = """\
#!%s
import os
print("Content-type: text/plain")
print("X-ambv: was here")
print("Content-type: text/html")
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):
res = self.request('/cgi-bin/file6.py', 'GET', headers=headers)
self.assertEqual(http.HTTPStatus.OK, res.status)
expected = f"'HTTP_ACCEPT': {expected!r}"
self.assertIn(expected.encode('ascii'), res.read())
expected = f"HTTP_ACCEPT={expected}".encode('ascii')
self.assertIn(expected, res.read())
class SocketlessRequestHandler(SimpleHTTPRequestHandler):