summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2012-11-13 20:43:23 -0600
committerMichael Merickel <michael@merickel.org>2012-11-13 20:43:23 -0600
commite35b16b028bd7c6781c316a0858b705f3745ba71 (patch)
treeda3f983988a3cf91a16d4cd2fcd7eafa4dc9842b
parent01c76b8bf509bbad41336d00d832241e7e02aa9e (diff)
parent6ec5a699bbd24e2d493418c3ada39390f943d517 (diff)
downloadpyramid-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.py22
-rw-r--r--pyramid/view.py4
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