forked from orbit-oss/flask
Re-raise BuildError with traceback.
This commit is contained in:
parent
bb31188ec3
commit
8c8c524ddb
2 changed files with 20 additions and 1 deletions
|
|
@ -1490,7 +1490,11 @@ class Flask(_PackageBoundObject):
|
||||||
Calls :attr:`build_error_handler` if it is not `None`.
|
Calls :attr:`build_error_handler` if it is not `None`.
|
||||||
"""
|
"""
|
||||||
if self.build_error_handler is None:
|
if self.build_error_handler is None:
|
||||||
raise error
|
exc_type, exc_value, tb = sys.exc_info()
|
||||||
|
if exc_value is error:
|
||||||
|
raise exc_type, exc_value, tb
|
||||||
|
else:
|
||||||
|
raise error
|
||||||
return self.build_error_handler(error, endpoint, **values)
|
return self.build_error_handler(error, endpoint, **values)
|
||||||
|
|
||||||
def preprocess_request(self):
|
def preprocess_request(self):
|
||||||
|
|
|
||||||
|
|
@ -698,8 +698,23 @@ class BasicFunctionalityTestCase(FlaskTestCase):
|
||||||
|
|
||||||
def test_build_error_handler(self):
|
def test_build_error_handler(self):
|
||||||
app = flask.Flask(__name__)
|
app = flask.Flask(__name__)
|
||||||
|
|
||||||
|
# Test base case, a URL which results in a BuildError.
|
||||||
with app.test_request_context():
|
with app.test_request_context():
|
||||||
self.assertRaises(BuildError, flask.url_for, 'spam')
|
self.assertRaises(BuildError, flask.url_for, 'spam')
|
||||||
|
|
||||||
|
# Verify the error is re-raised if not the current exception.
|
||||||
|
try:
|
||||||
|
with app.test_request_context():
|
||||||
|
flask.url_for('spam')
|
||||||
|
except BuildError, error:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
raise RuntimeError('Test case where BuildError is not current.')
|
||||||
|
except RuntimeError:
|
||||||
|
self.assertRaises(BuildError, app.handle_build_error, error, 'spam')
|
||||||
|
|
||||||
|
# Test a custom handler.
|
||||||
def handler(error, endpoint, **values):
|
def handler(error, endpoint, **values):
|
||||||
# Just a test.
|
# Just a test.
|
||||||
return '/test_handler/'
|
return '/test_handler/'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue