Commit d77133b4 authored by Martin Panter's avatar Martin Panter

Issue #26717: Merge wsgiref fix from 3.5

parents 528619b6 50dd1f7d
from unittest import mock
from unittest import TestCase from unittest import TestCase
from wsgiref.util import setup_testing_defaults from wsgiref.util import setup_testing_defaults
from wsgiref.headers import Headers from wsgiref.headers import Headers
...@@ -221,6 +222,29 @@ class IntegrationTests(TestCase): ...@@ -221,6 +222,29 @@ class IntegrationTests(TestCase):
b"data", b"data",
out) out)
def test_cp1252_url(self):
def app(e, s):
s("200 OK", [
("Content-Type", "text/plain"),
("Date", "Wed, 24 Dec 2008 13:29:32 GMT"),
])
# PEP3333 says environ variables are decoded as latin1.
# Encode as latin1 to get original bytes
return [e["PATH_INFO"].encode("latin1")]
out, err = run_amock(
validator(app), data=b"GET /\x80%80 HTTP/1.0")
self.assertEqual(
[
b"HTTP/1.0 200 OK",
mock.ANY,
b"Content-Type: text/plain",
b"Date: Wed, 24 Dec 2008 13:29:32 GMT",
b"",
b"/\x80\x80",
],
out.splitlines())
class UtilityTests(TestCase): class UtilityTests(TestCase):
......
...@@ -82,7 +82,7 @@ class WSGIRequestHandler(BaseHTTPRequestHandler): ...@@ -82,7 +82,7 @@ class WSGIRequestHandler(BaseHTTPRequestHandler):
else: else:
path,query = self.path,'' path,query = self.path,''
env['PATH_INFO'] = urllib.parse.unquote_to_bytes(path).decode('iso-8859-1') env['PATH_INFO'] = urllib.parse.unquote(path, 'iso-8859-1')
env['QUERY_STRING'] = query env['QUERY_STRING'] = query
host = self.address_string() host = self.address_string()
......
...@@ -1385,6 +1385,7 @@ Nir Soffer ...@@ -1385,6 +1385,7 @@ Nir Soffer
Paul Sokolovsky Paul Sokolovsky
Evgeny Sologubov Evgeny Sologubov
Cody Somerville Cody Somerville
Anthony Sottile
Edoardo Spadolini Edoardo Spadolini
Geoffrey Spear Geoffrey Spear
Clay Spence Clay Spence
......
...@@ -245,6 +245,9 @@ Core and Builtins ...@@ -245,6 +245,9 @@ Core and Builtins
Library Library
------- -------
- Issue #26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by
Anthony Sottile.
- Issue #26782: Add STARTUPINFO to subprocess.__all__ on Windows. - Issue #26782: Add STARTUPINFO to subprocess.__all__ on Windows.
- Issue #26404: Add context manager to socketserver. Patch by Aviv Palivoda. - Issue #26404: Add context manager to socketserver. Patch by Aviv Palivoda.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment