]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-44647: Fix test_httpservers failing on Unicode characters in os.environ on Window...
authorŁukasz Langa <lukasz@langa.pl>
Thu, 15 Jul 2021 19:14:24 +0000 (21:14 +0200)
committerGitHub <noreply@github.com>
Thu, 15 Jul 2021 19:14:24 +0000 (21:14 +0200)
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.

Lib/test/test_httpservers.py

index aeea020d2416d2c4ab19ae878ca5c239638507a5..69790ec746314529d7b808f63996f32e0182d4c5 100644 (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):