diff -r 89704c124fa8 Lib/test/test_wsgiref.py --- a/Lib/test/test_wsgiref.py Thu Mar 17 11:01:35 2016 -0400 +++ b/Lib/test/test_wsgiref.py Thu Mar 17 17:32:18 2016 +0000 @@ -166,6 +166,48 @@ " be of type list: " ) + def test_status_validation_error_1(self): + def bad_app(environ,start_response): + start_response("200", [("Content-Type", "text/plain; charset=utf-8")]) + return ["Hello, world!"] + + out, err = run_amock(bad_app) + self.assertTrue(out.endswith( + b"A server error occurred. Please contact the administrator." + )) + self.assertEqual( + err.splitlines()[-2], + "AssertionError: Status must be at least 4 characters" + ) + + def test_status_validation_error_2(self): + def bad_app(environ,start_response): + start_response("20X OK", [("Content-Type", "text/plain; charset=utf-8")]) + return ["Hello, world!"] + + out, err = run_amock(bad_app) + self.assertTrue(out.endswith( + b"A server error occurred. Please contact the administrator." + )) + self.assertEqual( + err.splitlines()[-2], + "AssertionError: Status message must begin w/3-digit code" + ) + + def test_status_validation_error_3(self): + def bad_app(environ,start_response): + start_response("200OK", [("Content-Type", "text/plain; charset=utf-8")]) + return ["Hello, world!"] + + out, err = run_amock(bad_app) + self.assertTrue(out.endswith( + b"A server error occurred. Please contact the administrator." + )) + self.assertEqual( + err.splitlines()[-2], + "AssertionError: Status message must have a space after code" + ) + def test_wsgi_input(self): def bad_app(e,s): e["wsgi.input"].read() diff -r 89704c124fa8 Lib/wsgiref/handlers.py --- a/Lib/wsgiref/handlers.py Thu Mar 17 11:01:35 2016 -0400 +++ b/Lib/wsgiref/handlers.py Thu Mar 17 17:32:18 2016 +0000 @@ -225,9 +225,9 @@ self.status = status self.headers = self.headers_class(headers) status = self._convert_string_type(status, "Status") - 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]==" ", "Status message must have a space after code" + assert len(status) >= 4, "Status must be at least 4 characters" + assert status[:3].isnumeric(), "Status message must begin w/3-digit code" + assert status[3] == " ", "Status message must have a space after code" if __debug__: for name, val in headers: