diff options
| -rw-r--r-- | paste/wsgiwrappers.py | 5 | ||||
| -rw-r--r-- | tests/test_wsgiwrappers.py | 19 |
2 files changed, 13 insertions, 11 deletions
diff --git a/paste/wsgiwrappers.py b/paste/wsgiwrappers.py index 290179d..1cbae4f 100644 --- a/paste/wsgiwrappers.py +++ b/paste/wsgiwrappers.py @@ -14,6 +14,7 @@ try: except ImportError: # Python 2 from Cookie import SimpleCookie +import six from paste.request import EnvironHeaders, get_cookie_dict, \ parse_dict_querystring, parse_formvars @@ -303,7 +304,7 @@ class WSGIResponse(object): default=dict(content_type='text/html', charset='utf-8', errors='strict', headers={'Cache-Control':'no-cache'}) ) - def __init__(self, content='', mimetype=None, code=200): + def __init__(self, content=b'', mimetype=None, code=200): self._iter = None self._is_str_iter = True @@ -409,7 +410,7 @@ class WSGIResponse(object): self.cookies[key]['max-age'] = 0 def _set_content(self, content): - if hasattr(content, '__iter__'): + if not isinstance(content, (six.binary_type, six.text_type)): self._iter = content if isinstance(content, list): self._is_str_iter = True diff --git a/tests/test_wsgiwrappers.py b/tests/test_wsgiwrappers.py index 0448c69..833b4f2 100644 --- a/tests/test_wsgiwrappers.py +++ b/tests/test_wsgiwrappers.py @@ -4,6 +4,7 @@ import cgi from paste.fixture import TestApp from paste.wsgiwrappers import WSGIRequest, WSGIResponse +import six class AssertApp(object): def __init__(self, assertfunc): @@ -79,23 +80,23 @@ def test_wsgirequest_charset_fileupload(): assert isinstance(fs, cgi.FieldStorage) assert isinstance(fs.filename, str) assert fs.filename == '寿司.txt' - assert fs.value == 'Sushi' + assert fs.value == b'Sushi' request.charset = 'UTF-8' assert len(request.POST) == 1 assert isinstance(request.POST.keys()[0], str) fs = request.POST['thefile'] assert isinstance(fs, cgi.FieldStorage) - assert isinstance(fs.filename, unicode) + assert isinstance(fs.filename, six.text_type) assert fs.filename == u'寿司.txt' - assert fs.value == 'Sushi' + assert fs.value == b'Sushi' request.charset = None - assert fs.value == 'Sushi' + assert fs.value == b'Sushi' return [] app = TestApp(handle_fileupload) - res = app.post('/', upload_files=[('thefile', '寿司.txt', 'Sushi')]) + res = app.post('/', upload_files=[('thefile', '寿司.txt', b'Sushi')]) def test_wsgiresponse_charset(): response = WSGIResponse(mimetype='text/html; charset=UTF-8') @@ -106,7 +107,7 @@ def test_wsgiresponse_charset(): response.write('test3') status, headers, content = response.wsgi_response() for data in content: - assert isinstance(data, str) + assert isinstance(data, six.binary_type) WSGIResponse.defaults._push_object(dict(content_type='text/html', charset='iso-8859-1')) @@ -117,7 +118,7 @@ def test_wsgiresponse_charset(): response.write('test3') status, headers, content = response.wsgi_response() for data in content: - assert isinstance(data, str) + assert isinstance(data, six.binary_type) finally: WSGIResponse.defaults._pop_object() @@ -130,7 +131,7 @@ def test_wsgiresponse_charset(): response.write(u'test1') status, headers, content = response.wsgi_response() for data in content: - assert isinstance(data, unicode) + assert isinstance(data, six.text_type) finally: WSGIResponse.defaults._pop_object() @@ -141,6 +142,6 @@ def test_wsgiresponse_charset(): response.write(u'test1') status, headers, content = response.wsgi_response() for data in content: - assert isinstance(data, unicode) + assert isinstance(data, six.text_type) finally: WSGIResponse.defaults._pop_object() |
