Fixes #412 and also enable python 3.4 testing with flask

This commit is contained in:
Sven-Hendrik Haase 2015-03-30 17:14:38 +02:00
parent acfbd2bb58
commit 4934771b3f
4 changed files with 24 additions and 11 deletions

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -4,7 +4,7 @@
# and then run "tox" from this directory.
[tox]
envlist = py26, py27, py30, py31, py32, py33, pypy
envlist = py26, py27, py30, py31, py32, py33, py34, pypy
[testenv]
commands =