summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_httpservers.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2021-07-15 20:09:26 (GMT)
committerGitHub <noreply@github.com>2021-07-15 20:09:26 (GMT)
commit356bdff1e952f2ab7fdebae855bd78b401b735c4 (patch)
treea09d1b101719f2bf1b37ce1b38307f0b8b0b0bc5 /Lib/test/test_httpservers.py
parent47695e3c88343e794d37333853b2ba3f16505c5d (diff)
downloadcpython-356bdff1e952f2ab7fdebae855bd78b401b735c4.zip
cpython-356bdff1e952f2ab7fdebae855bd78b401b735c4.tar.gz
cpython-356bdff1e952f2ab7fdebae855bd78b401b735c4.tar.bz2
bpo-44647: Fix test_httpservers failing on Unicode characters in os.environ on Windows (GH-27161) (#27169)
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. (cherry picked from commit 82b218f36ce6ef910bda5af227a9fd5be613c94f) Co-authored-by: Ɓukasz Langa <lukasz@langa.pl>
Diffstat (limited to 'Lib/test/test_httpservers.py')
-rw-r--r--Lib/test/test_httpservers.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py
index aeea020..69790ec 100644
--- a/Lib/test/test_httpservers.py
+++ b/Lib/test/test_httpservers.py
@@ -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):