diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2021-07-15 20:09:26 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-15 20:09:26 (GMT) |
commit | 356bdff1e952f2ab7fdebae855bd78b401b735c4 (patch) | |
tree | a09d1b101719f2bf1b37ce1b38307f0b8b0b0bc5 /Lib/test/test_httpservers.py | |
parent | 47695e3c88343e794d37333853b2ba3f16505c5d (diff) | |
download | cpython-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.py | 17 |
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): |