Fixes #412 and also enable python 3.4 testing with flask
This commit is contained in:
parent
acfbd2bb58
commit
4934771b3f
|
@ -4,10 +4,8 @@ import sys
|
|||
|
||||
|
||||
collect_ignore = []
|
||||
if sys.version_info[0] > 2:
|
||||
collect_ignore.append("tests/contrib/flask")
|
||||
if sys.version_info[1] == 2:
|
||||
collect_ignore.append("tests/handlers/logbook")
|
||||
if sys.version_info[0] > 2 and sys.version_info[1] == 2:
|
||||
collect_ignore.append("tests/handlers/logbook")
|
||||
|
||||
try:
|
||||
import gevent
|
||||
|
|
|
@ -94,7 +94,7 @@ class Sentry(object):
|
|||
# TODO(dcramer): the client isn't using local context and therefore
|
||||
# gets shared by every app that does init on it
|
||||
def __init__(self, app=None, client=None, client_cls=Client, dsn=None,
|
||||
logging=False, level=logging.NOTSET, wrap_wsgi=True,
|
||||
logging=False, level=logging.NOTSET, wrap_wsgi=None,
|
||||
register_signal=True):
|
||||
self.dsn = dsn
|
||||
self.logging = logging
|
||||
|
@ -205,6 +205,13 @@ class Sentry(object):
|
|||
|
||||
if wrap_wsgi is not None:
|
||||
self.wrap_wsgi = wrap_wsgi
|
||||
else:
|
||||
# Fix https://github.com/getsentry/raven-python/issues/412
|
||||
# the gist is that we get errors twice in debug mode if we don't do this
|
||||
if app and app.debug:
|
||||
self.wrap_wsgi = False
|
||||
else:
|
||||
self.wrap_wsgi = True
|
||||
|
||||
if register_signal is not None:
|
||||
self.register_signal = register_signal
|
||||
|
|
|
@ -29,11 +29,12 @@ class User(AnonymousUserMixin):
|
|||
get_id = lambda x: 1
|
||||
|
||||
|
||||
def create_app(ignore_exceptions=None):
|
||||
def create_app(ignore_exceptions=None, debug=False):
|
||||
import os
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config['SECRET_KEY'] = os.urandom(40)
|
||||
app.debug = debug
|
||||
|
||||
if ignore_exceptions:
|
||||
app.config['RAVEN_IGNORE_EXCEPTIONS'] = ignore_exceptions
|
||||
|
@ -91,7 +92,7 @@ class BaseTest(TestCase):
|
|||
app = create_app(*args, **kwargs)
|
||||
raven = TempStoreClient()
|
||||
Sentry(app, client=raven)
|
||||
return app.test_client(), raven
|
||||
return app.test_client(), raven, app
|
||||
|
||||
|
||||
class FlaskTest(BaseTest):
|
||||
|
@ -203,22 +204,29 @@ class FlaskTest(BaseTest):
|
|||
http = event['request']
|
||||
self.assertEqual({}, http.get('data'))
|
||||
|
||||
def test_wrap_wsgi_status(self):
|
||||
_, _, app_debug = self.make_client_and_raven(debug=True)
|
||||
self.assertFalse(app_debug.extensions['sentry'].wrap_wsgi)
|
||||
|
||||
_, _, app_ndebug = self.make_client_and_raven(debug=False)
|
||||
self.assertTrue(app_ndebug.extensions['sentry'].wrap_wsgi)
|
||||
|
||||
def test_error_handler_with_ignored_exception(self):
|
||||
client, raven = self.make_client_and_raven(ignore_exceptions=[NameError, ValueError])
|
||||
client, raven, _ = self.make_client_and_raven(ignore_exceptions=[NameError, ValueError])
|
||||
|
||||
response = client.get('/an-error/')
|
||||
self.assertEquals(response.status_code, 500)
|
||||
self.assertEquals(len(raven.events), 0)
|
||||
|
||||
def test_error_handler_with_exception_not_ignored(self):
|
||||
client, raven = self.make_client_and_raven(ignore_exceptions=[NameError, KeyError])
|
||||
client, raven, _ = self.make_client_and_raven(ignore_exceptions=[NameError, KeyError])
|
||||
|
||||
response = client.get('/an-error/')
|
||||
self.assertEquals(response.status_code, 500)
|
||||
self.assertEquals(len(raven.events), 1)
|
||||
|
||||
def test_error_handler_with_empty_ignore_exceptions_list(self):
|
||||
client, raven = self.make_client_and_raven(ignore_exceptions=[])
|
||||
client, raven, _ = self.make_client_and_raven(ignore_exceptions=[])
|
||||
|
||||
response = client.get('/an-error/')
|
||||
self.assertEquals(response.status_code, 500)
|
||||
|
|
Loading…
Reference in New Issue