Browse Source

Warn on None responses.

pull/1638/head
Armin Ronacher 15 years ago
parent
commit
a862ead5f2
  1. 7
      flask.py
  2. 14
      tests/flask_tests.py

7
flask.py

@ -687,7 +687,7 @@ class Flask(object):
"""Converts the return value from a view function to a real """Converts the return value from a view function to a real
response object that is an instance of :attr:`response_class`. response object that is an instance of :attr:`response_class`.
The following types are allowd for `rv`: The following types are allowed for `rv`:
======================= =========================================== ======================= ===========================================
:attr:`response_class` the object is returned unchanged :attr:`response_class` the object is returned unchanged
@ -703,6 +703,11 @@ class Flask(object):
:param rv: the return value from the view function :param rv: the return value from the view function
""" """
if rv is None:
from warnings import warn
warn(Warning('View function did not return a response'),
stacklevel=2)
return u''
if isinstance(rv, self.response_class): if isinstance(rv, self.response_class):
return rv return rv
if isinstance(rv, basestring): if isinstance(rv, basestring):

14
tests/flask_tests.py

@ -15,6 +15,7 @@ import sys
import flask import flask
import unittest import unittest
import tempfile import tempfile
import warnings
example_path = os.path.join(os.path.dirname(__file__), '..', 'examples') example_path = os.path.join(os.path.dirname(__file__), '..', 'examples')
@ -224,6 +225,19 @@ class BasicFunctionalityTestCase(unittest.TestCase):
assert flask.url_for('static', filename='index.html') \ assert flask.url_for('static', filename='index.html') \
== '/static/index.html' == '/static/index.html'
def test_none_response(self):
warnings.filterwarnings('error', 'View function did not return')
app = flask.Flask(__name__)
@app.route('/')
def test():
return None
try:
app.test_client().get('/')
except Warning:
pass
else:
assert "Expected warning"
class JSONTestCase(unittest.TestCase): class JSONTestCase(unittest.TestCase):

Loading…
Cancel
Save