diff options
author | Cheryl Sabella <cheryl.sabella@gmail.com> | 2018-12-25 23:19:11 (GMT) |
---|---|---|
committer | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2018-12-25 23:19:11 (GMT) |
commit | 5ef4fc241aea6759ef3f55b1ef564aebc492a0db (patch) | |
tree | a0695bf2d5c08f7e0ce7ee0321045a3683f803c1 /Lib | |
parent | 32d96a2b5bc3136d45a66adbdb45fac351b520ce (diff) | |
download | cpython-5ef4fc241aea6759ef3f55b1ef564aebc492a0db.zip cpython-5ef4fc241aea6759ef3f55b1ef564aebc492a0db.tar.gz cpython-5ef4fc241aea6759ef3f55b1ef564aebc492a0db.tar.bz2 |
bpo-35565: Add detail to assertion failure message in wsgiref (GH-11293)
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_wsgiref.py | 13 | ||||
-rw-r--r-- | Lib/wsgiref/handlers.py | 3 |
2 files changed, 15 insertions, 1 deletions
diff --git a/Lib/test/test_wsgiref.py b/Lib/test/test_wsgiref.py index 737dfed..3a953d8 100644 --- a/Lib/test/test_wsgiref.py +++ b/Lib/test/test_wsgiref.py @@ -193,6 +193,19 @@ class IntegrationTests(TestCase): )) self.assertEqual(err.splitlines()[-2], exc_message) + @unittest.skipIf(support.python_is_optimized(), + "Python was compiled with optimizations") + def test_hop_by_hop_validation_error(self): + def bad_app(environ, start_response): + start_response("200 OK", [('Content-Type', 'text/plain'), + ('Connection', 'close')]) + return ["Hello, world!"] + out, err = run_amock(bad_app) + self.assertTrue(out.endswith( + b"A server error occurred. Please contact the administrator." + )) + self.assertRaises(AssertionError) + def test_wsgi_input(self): def bad_app(e,s): e["wsgi.input"].read() diff --git a/Lib/wsgiref/handlers.py b/Lib/wsgiref/handlers.py index f4300b8..28ed9b7 100644 --- a/Lib/wsgiref/handlers.py +++ b/Lib/wsgiref/handlers.py @@ -233,7 +233,8 @@ class BaseHandler: for name, val in headers: name = self._convert_string_type(name, "Header name") val = self._convert_string_type(val, "Header value") - assert not is_hop_by_hop(name),"Hop-by-hop headers not allowed" + assert not is_hop_by_hop(name),\ + f"Hop-by-hop header, '{name}: {val}', not allowed" return self.write |