diff options
| author | Michael Merickel <michael@merickel.org> | 2012-11-13 20:43:23 -0600 |
|---|---|---|
| committer | Michael Merickel <michael@merickel.org> | 2012-11-13 20:43:23 -0600 |
| commit | e35b16b028bd7c6781c316a0858b705f3745ba71 (patch) | |
| tree | da3f983988a3cf91a16d4cd2fcd7eafa4dc9842b | |
| parent | 01c76b8bf509bbad41336d00d832241e7e02aa9e (diff) | |
| parent | 6ec5a699bbd24e2d493418c3ada39390f943d517 (diff) | |
| download | pyramid-e35b16b028bd7c6781c316a0858b705f3745ba71.tar.gz pyramid-e35b16b028bd7c6781c316a0858b705f3745ba71.tar.bz2 pyramid-e35b16b028bd7c6781c316a0858b705f3745ba71.zip | |
Merge branch 'master' of avolkov/pyramid into pull.725
| -rw-r--r-- | pyramid/tests/test_view.py | 22 | ||||
| -rw-r--r-- | pyramid/view.py | 4 |
2 files changed, 22 insertions, 4 deletions
diff --git a/pyramid/tests/test_view.py b/pyramid/tests/test_view.py index 0af941e0d..42cfea37b 100644 --- a/pyramid/tests/test_view.py +++ b/pyramid/tests/test_view.py @@ -230,6 +230,22 @@ class RenderViewToIterableTests(BaseTest, unittest.TestCase): iterable = self._callFUT(context, request, name='registered', secure=False) self.assertEqual(iterable, ['anotherview']) + def test_verify_output_bytestring(self): + from pyramid.request import Request + from pyramid.config import Configurator + from pyramid.view import render_view + from webob.compat import text_type + config = Configurator(settings={}) + def view(request): + request.response.text = text_type('<body></body>') + return request.response + + config.add_view(name='test', view=view) + config.commit() + + r = Request({}) + r.registry = config.registry + self.assertEqual(render_view(object(), r, 'test'), b'<body></body>') def test_call_request_has_no_registry(self): request = self._makeRequest() @@ -261,7 +277,7 @@ class RenderViewTests(BaseTest, unittest.TestCase): view = make_view(response) self._registerView(request.registry, view, 'registered') s = self._callFUT(context, request, name='registered', secure=True) - self.assertEqual(s, '') + self.assertEqual(s, b'') def test_call_view_registered_insecure_no_call_permissive(self): context = self._makeContext() @@ -270,7 +286,7 @@ class RenderViewTests(BaseTest, unittest.TestCase): view = make_view(response) self._registerView(request.registry, view, 'registered') s = self._callFUT(context, request, name='registered', secure=False) - self.assertEqual(s, '') + self.assertEqual(s, b'') def test_call_view_registered_insecure_with_call_permissive(self): context = self._makeContext() @@ -282,7 +298,7 @@ class RenderViewTests(BaseTest, unittest.TestCase): view.__call_permissive__ = anotherview self._registerView(request.registry, view, 'registered') s = self._callFUT(context, request, name='registered', secure=False) - self.assertEqual(s, 'anotherview') + self.assertEqual(s, b'anotherview') class TestIsResponse(unittest.TestCase): def setUp(self): diff --git a/pyramid/view.py b/pyramid/view.py index 835982e79..972877fea 100644 --- a/pyramid/view.py +++ b/pyramid/view.py @@ -2,6 +2,8 @@ import venusian from zope.interface import providedBy from zope.deprecation import deprecated +from webob.compat import text_type + from pyramid.interfaces import ( IRoutesMapper, @@ -136,7 +138,7 @@ def render_view(context, request, name='', secure=True): iterable = render_view_to_iterable(context, request, name, secure) if iterable is None: return None - return ''.join(iterable) + return b''.join((x.encode('utf-8') if isinstance(x, text_type) else x for x in iterable)) class view_config(object): """ A function, class or method :term:`decorator` which allows a |
