mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
Issue #26560: Avoid potential ValueError in BaseHandler.start_response
Initial patch by Peter Inglesby.
This commit is contained in:
commit
cf934a1c9b
3 changed files with 25 additions and 1 deletions
|
@ -166,6 +166,27 @@ class IntegrationTests(TestCase):
|
||||||
" be of type list: <class 'tuple'>"
|
" be of type list: <class 'tuple'>"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_status_validation_errors(self):
|
||||||
|
def create_bad_app(status):
|
||||||
|
def bad_app(environ, start_response):
|
||||||
|
start_response(status, [("Content-Type", "text/plain; charset=utf-8")])
|
||||||
|
return [b"Hello, world!"]
|
||||||
|
return bad_app
|
||||||
|
|
||||||
|
tests = [
|
||||||
|
('200', 'AssertionError: Status must be at least 4 characters'),
|
||||||
|
('20X OK', 'AssertionError: Status message must begin w/3-digit code'),
|
||||||
|
('200OK', 'AssertionError: Status message must have a space after code'),
|
||||||
|
]
|
||||||
|
|
||||||
|
for status, exc_message in tests:
|
||||||
|
with self.subTest(status=status):
|
||||||
|
out, err = run_amock(create_bad_app(status))
|
||||||
|
self.assertTrue(out.endswith(
|
||||||
|
b"A server error occurred. Please contact the administrator."
|
||||||
|
))
|
||||||
|
self.assertEqual(err.splitlines()[-2], exc_message)
|
||||||
|
|
||||||
def test_wsgi_input(self):
|
def test_wsgi_input(self):
|
||||||
def bad_app(e,s):
|
def bad_app(e,s):
|
||||||
e["wsgi.input"].read()
|
e["wsgi.input"].read()
|
||||||
|
|
|
@ -226,7 +226,7 @@ class BaseHandler:
|
||||||
self.headers = self.headers_class(headers)
|
self.headers = self.headers_class(headers)
|
||||||
status = self._convert_string_type(status, "Status")
|
status = self._convert_string_type(status, "Status")
|
||||||
assert len(status)>=4,"Status must be at least 4 characters"
|
assert len(status)>=4,"Status must be at least 4 characters"
|
||||||
assert int(status[:3]),"Status message must begin w/3-digit code"
|
assert status[:3].isdigit(), "Status message must begin w/3-digit code"
|
||||||
assert status[3]==" ", "Status message must have a space after code"
|
assert status[3]==" ", "Status message must have a space after code"
|
||||||
|
|
||||||
if __debug__:
|
if __debug__:
|
||||||
|
|
|
@ -226,6 +226,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #26560: Avoid potential ValueError in BaseHandler.start_response.
|
||||||
|
Initial patch by Peter Inglesby.
|
||||||
|
|
||||||
- Issue #26567: Add a new function :c:func:`PyErr_ResourceWarning` function to
|
- Issue #26567: Add a new function :c:func:`PyErr_ResourceWarning` function to
|
||||||
pass the destroyed object. Add a *source* attribute to
|
pass the destroyed object. Add a *source* attribute to
|
||||||
:class:`warnings.WarningMessage`. Add warnings._showwarnmsg() which uses
|
:class:`warnings.WarningMessage`. Add warnings._showwarnmsg() which uses
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue