summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2015-04-22 00:21:13 +0200
committerVictor Stinner <victor.stinner@gmail.com>2015-04-22 00:21:13 +0200
commit99957c0931938f4b7747fb34e10cb18f5e611ada (patch)
treeca84504877095fbe7b19537469d3c80522150d5d
parent8614a131872af9e7d7b329c886dae20766c2652c (diff)
downloadpaste-git-99957c0931938f4b7747fb34e10cb18f5e611ada.tar.gz
Port test_errordocument on Python 3
On Python 3, encode body to UTF-8
-rw-r--r--paste/errordocument.py13
-rw-r--r--tests/test_errordocument.py12
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):