diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2015-04-22 00:21:13 +0200 |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2015-04-22 00:21:13 +0200 |
commit | 99957c0931938f4b7747fb34e10cb18f5e611ada (patch) | |
tree | ca84504877095fbe7b19537469d3c80522150d5d | |
parent | 8614a131872af9e7d7b329c886dae20766c2652c (diff) | |
download | paste-git-99957c0931938f4b7747fb34e10cb18f5e611ada.tar.gz |
Port test_errordocument on Python 3
On Python 3, encode body to UTF-8
-rw-r--r-- | paste/errordocument.py | 13 | ||||
-rw-r--r-- | tests/test_errordocument.py | 12 |
2 files changed, 16 insertions, 9 deletions
diff --git a/paste/errordocument.py b/paste/errordocument.py index 62224b3..b5f34fe 100644 --- a/paste/errordocument.py +++ b/paste/errordocument.py @@ -15,6 +15,7 @@ from six.moves.urllib import parse as urlparse from paste.recursive import ForwardRequestException, RecursiveMiddleware, RecursionLoop from paste.util import converters from paste.response import replace_header +import six def forward(app, codes): """ @@ -85,10 +86,16 @@ class StatusKeeper(object): try: return self.app(environ, keep_status_start_response) except RecursionLoop as e: - environ['wsgi.errors'].write('Recursion error getting error page: %s\n' % e) + line = 'Recursion error getting error page: %s\n' % e + if six.PY3: + line = line.encode('utf8') + environ['wsgi.errors'].write(line) keep_status_start_response('500 Server Error', [('Content-type', 'text/plain')], sys.exc_info()) - return ['Error: %s. (Error page could not be fetched)' - % self.status] + body = ('Error: %s. (Error page could not be fetched)' + % self.status) + if six.PY3: + body = body.encode('utf8') + return [body] class StatusBasedForward(object): diff --git a/tests/test_errordocument.py b/tests/test_errordocument.py index c284b93..efeae61 100644 --- a/tests/test_errordocument.py +++ b/tests/test_errordocument.py @@ -4,11 +4,11 @@ from paste.recursive import RecursiveMiddleware def simple_app(environ, start_response): start_response("200 OK", [('Content-type', 'text/plain')]) - return ['requested page returned'] + return [b'requested page returned'] def not_found_app(environ, start_response): start_response("404 Not found", [('Content-type', 'text/plain')]) - return ['requested page returned'] + return [b'requested page returned'] def test_ok(): app = TestApp(simple_app) @@ -20,10 +20,10 @@ def test_ok(): def error_docs_app(environ, start_response): if environ['PATH_INFO'] == '/not_found': start_response("404 Not found", [('Content-type', 'text/plain')]) - return ['Not found'] + return [b'Not found'] elif environ['PATH_INFO'] == '/error': start_response("200 OK", [('Content-type', 'text/plain')]) - return ['Page not found'] + return [b'Page not found'] else: return simple_app(environ, start_response) @@ -68,7 +68,7 @@ def auth_docs_app(environ, start_response): return auth_required_app(environ, start_response) elif environ['PATH_INFO'] == '/auth_doc': start_response("200 OK", [('Content-type', 'text/html')]) - return ['<html>Login!</html>'] + return [b'<html>Login!</html>'] else: return simple_app(environ, start_response) @@ -80,7 +80,7 @@ def test_auth_docs_app(): res = app.get('/auth', status=401) assert res.header('content-type') == 'text/html' assert res.header('www-authenticate') == 'Basic realm="Foo"' - assert res.body == '<html>Login!</html>' + assert res.body == b'<html>Login!</html>' def test_bad_error(): def app(environ, start_response): |