summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Steffner <johan@agigen.se>2016-10-27 09:40:11 +0200
committerJohan Steffner <johan@agigen.se>2016-10-27 13:48:32 +0200
commit1fd8bb66ae91c6340c68ca82bbe05f8ee0329273 (patch)
tree690f6a5d32032cc01c2986d8e38cfc3083f2252e
parentd5f675be3a3658df6206756183bbd4d192c230cd (diff)
downloadraven-1fd8bb66ae91c6340c68ca82bbe05f8ee0329273.tar.gz
Update event values order for exceptions
-rw-r--r--raven/base.py6
-rw-r--r--raven/events.py4
-rw-r--r--tests/base/tests.py10
-rw-r--r--tests/contrib/bottle/tests.py2
-rw-r--r--tests/contrib/django/tests.py16
-rw-r--r--tests/contrib/flask/tests.py2
-rw-r--r--tests/contrib/test_celery.py2
-rw-r--r--tests/contrib/webpy/tests.py2
-rw-r--r--tests/events/tests.py10
-rw-r--r--tests/handlers/logbook/tests.py2
-rw-r--r--tests/handlers/logging/tests.py2
-rw-r--r--tests/middleware/tests.py6
-rw-r--r--tests/processors/tests.py4
13 files changed, 34 insertions, 34 deletions
diff --git a/raven/base.py b/raven/base.py
index 6ff424c..7809823 100644
--- a/raven/base.py
+++ b/raven/base.py
@@ -623,7 +623,7 @@ class Client(object):
for frame in data['stacktrace']['frames']:
yield frame
if 'exception' in data:
- for frame in data['exception']['values'][0]['stacktrace']['frames']:
+ for frame in data['exception']['values'][-1]['stacktrace']['frames']:
yield frame
def _successful_send(self):
@@ -655,9 +655,9 @@ class Client(object):
"""
message = data.pop('message', '<no message value>')
output = [message]
- if 'exception' in data and 'stacktrace' in data['exception']['values'][0]:
+ if 'exception' in data and 'stacktrace' in data['exception']['values'][-1]:
# try to reconstruct a reasonable version of the exception
- for frame in data['exception']['values'][0]['stacktrace']['frames']:
+ for frame in data['exception']['values'][-1]['stacktrace']['frames']:
output.append(' File "%(fn)s", line %(lineno)s, in %(func)s' % {
'fn': frame.get('filename', 'unknown_filename'),
'lineno': frame.get('lineno', -1),
diff --git a/raven/events.py b/raven/events.py
index 7434fe9..3627823 100644
--- a/raven/events.py
+++ b/raven/events.py
@@ -78,7 +78,7 @@ class Exception(BaseEvent):
name = 'exception'
def to_string(self, data):
- exc = data[self.name]['values'][0]
+ exc = data[self.name]['values'][-1]
if exc['value']:
return '%s: %s' % (exc['type'], exc['value'])
return exc['type']
@@ -115,7 +115,7 @@ class Exception(BaseEvent):
values = []
for exc_info in _chained_exceptions(exc_info):
value = self._get_value(*exc_info)
- values.append(value)
+ values.insert(0, value)
return {
'level': kwargs.get('level', logging.ERROR),
diff --git a/tests/base/tests.py b/tests/base/tests.py
index 83a1242..cb988da 100644
--- a/tests/base/tests.py
+++ b/tests/base/tests.py
@@ -292,7 +292,7 @@ class ClientTest(TestCase):
event = self.client.events.pop(0)
self.assertEquals(event['message'], 'ValueError: foo')
self.assertTrue('exception' in event)
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
self.assertEquals(exc['type'], 'ValueError')
self.assertEquals(exc['value'], 'foo')
self.assertEquals(exc['module'], ValueError.__module__) # this differs in some Python versions
@@ -316,7 +316,7 @@ class ClientTest(TestCase):
event = self.client.events.pop(0)
self.assertEquals(event['message'], 'ValueError: foo')
self.assertTrue('exception' in event)
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
stacktrace = exc['stacktrace']
self.assertEquals(len(stacktrace['frames']), 1)
frame = stacktrace['frames'][0]
@@ -347,7 +347,7 @@ class ClientTest(TestCase):
self.assertEquals(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEquals(event['message'], 'DecoratorTestException')
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
self.assertEquals(exc['type'], 'DecoratorTestException')
self.assertEquals(exc['module'], self.DecoratorTestException.__module__)
stacktrace = exc['stacktrace']
@@ -382,7 +382,7 @@ class ClientTest(TestCase):
self.assertEquals(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEquals(event['message'], 'DecoratorTestException')
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
self.assertEquals(exc['type'], 'DecoratorTestException')
self.assertEquals(exc['module'], self.DecoratorTestException.__module__)
stacktrace = exc['stacktrace']
@@ -563,7 +563,7 @@ class ClientTest(TestCase):
})
event = client.events.pop(0)
- frames = event['exception']['values'][0]['stacktrace']['frames']
+ frames = event['exception']['values'][-1]['stacktrace']['frames']
assert frames[0]['in_app']
assert not frames[1]['in_app']
assert not frames[2]['in_app']
diff --git a/tests/contrib/bottle/tests.py b/tests/contrib/bottle/tests.py
index 1c1da6e..bfa7ada 100644
--- a/tests/contrib/bottle/tests.py
+++ b/tests/contrib/bottle/tests.py
@@ -66,7 +66,7 @@ class BottleTest(BaseTest):
event = self.raven.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
self.assertEquals(exc['type'], 'ValueError')
def test_captureException_captures_http(self):
diff --git a/tests/contrib/django/tests.py b/tests/contrib/django/tests.py
index 3326cca..89edd65 100644
--- a/tests/contrib/django/tests.py
+++ b/tests/contrib/django/tests.py
@@ -156,7 +156,7 @@ class DjangoClientTest(TestCase):
assert len(self.raven.events) == 1
event = self.raven.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
assert exc['type'] == 'TypeError'
assert exc['value'], "int() argument must be a string or a number == not 'NoneType'"
assert event['level'] == logging.ERROR
@@ -169,7 +169,7 @@ class DjangoClientTest(TestCase):
assert len(self.raven.events) == 1
event = self.raven.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
assert exc['type'] == 'Exception'
assert exc['value'] == 'view exception'
assert event['level'] == logging.ERROR
@@ -260,7 +260,7 @@ class DjangoClientTest(TestCase):
event = self.raven.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
assert exc['type'] == 'ImportError'
assert exc['value'] == 'request'
assert event['level'] == logging.ERROR
@@ -276,7 +276,7 @@ class DjangoClientTest(TestCase):
event = self.raven.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
assert exc['type'] == 'ImportError'
assert exc['value'] == 'response'
assert event['level'] == logging.ERROR
@@ -293,7 +293,7 @@ class DjangoClientTest(TestCase):
event = self.raven.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
assert exc['type'] == 'Exception'
assert exc['value'] == 'view exception'
assert event['level'] == logging.ERROR
@@ -302,7 +302,7 @@ class DjangoClientTest(TestCase):
event = self.raven.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
assert exc['type'] == 'ValueError'
assert exc['value'] == 'handler500'
assert event['level'] == logging.ERROR
@@ -316,7 +316,7 @@ class DjangoClientTest(TestCase):
event = self.raven.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
assert exc['type'] == 'ImportError'
assert exc['value'] == 'view'
assert event['level'] == logging.ERROR
@@ -498,7 +498,7 @@ class DjangoClientTest(TestCase):
assert len(self.raven.events) == 1
event = self.raven.events.pop(0)
- frames = event['exception']['values'][0]['stacktrace']['frames']
+ frames = event['exception']['values'][-1]['stacktrace']['frames']
for frame in frames:
if frame['module'].startswith('django.'):
assert frame.get('in_app') is False
diff --git a/tests/contrib/flask/tests.py b/tests/contrib/flask/tests.py
index 73dff6a..4fffc53 100644
--- a/tests/contrib/flask/tests.py
+++ b/tests/contrib/flask/tests.py
@@ -106,7 +106,7 @@ class FlaskTest(BaseTest):
event = self.raven.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
self.assertEquals(exc['type'], 'ValueError')
self.assertEquals(exc['value'], 'hello world')
self.assertEquals(event['level'], logging.ERROR)
diff --git a/tests/contrib/test_celery.py b/tests/contrib/test_celery.py
index bc3de0f..95a3b74 100644
--- a/tests/contrib/test_celery.py
+++ b/tests/contrib/test_celery.py
@@ -26,7 +26,7 @@ class CeleryTestCase(TestCase):
dummy_task.delay(1, 0)
assert len(self.client.events) == 1
event = self.client.events[0]
- exception = event['exception']['values'][0]
+ exception = event['exception']['values'][-1]
assert event['culprit'] == 'dummy_task'
assert exception['type'] == 'ZeroDivisionError'
diff --git a/tests/contrib/webpy/tests.py b/tests/contrib/webpy/tests.py
index 82528dd..9b13e71 100644
--- a/tests/contrib/webpy/tests.py
+++ b/tests/contrib/webpy/tests.py
@@ -53,7 +53,7 @@ class WebPyTest(TestCase):
event = self.store.events.pop()
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
self.assertEquals(exc['type'], 'ValueError')
self.assertEquals(exc['value'], 'That\'s what she said')
self.assertEquals(event['message'], 'ValueError: That\'s what she said')
diff --git a/tests/events/tests.py b/tests/events/tests.py
index e5795b4..484dfe7 100644
--- a/tests/events/tests.py
+++ b/tests/events/tests.py
@@ -18,7 +18,7 @@ class ExceptionTest(TestCase):
else:
# Otherwise, we only report the first element.
def transform_expected(self, expected):
- return expected[:1]
+ return expected[-1:]
def check_capture(self, expected):
"""
@@ -51,7 +51,7 @@ class ExceptionTest(TestCase):
try:
raise KeyError()
except Exception:
- self.check_capture(['KeyError', 'ValueError'])
+ self.check_capture(['ValueError', 'KeyError'])
def test_raise_from(self):
try:
@@ -60,7 +60,7 @@ class ExceptionTest(TestCase):
try:
six.raise_from(KeyError(), exc)
except Exception:
- self.check_capture(['KeyError', 'ValueError'])
+ self.check_capture(['ValueError', 'KeyError'])
def test_raise_from_different(self):
try:
@@ -69,7 +69,7 @@ class ExceptionTest(TestCase):
try:
six.raise_from(KeyError(), TypeError())
except Exception:
- self.check_capture(['KeyError', 'TypeError'])
+ self.check_capture(['TypeError', 'KeyError'])
def test_handles_self_referencing(self):
try:
@@ -93,7 +93,7 @@ class ExceptionTest(TestCase):
try:
six.raise_from(exc, exc2)
except Exception:
- self.check_capture(['ValueError', 'KeyError'])
+ self.check_capture(['KeyError', 'ValueError'])
else:
pytest.fail()
else:
diff --git a/tests/handlers/logbook/tests.py b/tests/handlers/logbook/tests.py
index c381017..1f00c29 100644
--- a/tests/handlers/logbook/tests.py
+++ b/tests/handlers/logbook/tests.py
@@ -81,7 +81,7 @@ class LogbookHandlerTest(TestCase):
self.assertEquals(event['message'], 'This is a test info with an exception')
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
self.assertEquals(exc['type'], 'ValueError')
self.assertEquals(exc['value'], 'This is a test ValueError')
self.assertTrue('sentry.interfaces.Message' in event)
diff --git a/tests/handlers/logging/tests.py b/tests/handlers/logging/tests.py
index bf8063a..05981ca 100644
--- a/tests/handlers/logging/tests.py
+++ b/tests/handlers/logging/tests.py
@@ -134,7 +134,7 @@ class LoggingIntegrationTest(TestCase):
self.assertEqual(event['message'], 'This is a test info with an exception')
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
self.assertEqual(exc['type'], 'ValueError')
self.assertEqual(exc['value'], 'This is a test ValueError')
self.assertTrue('sentry.interfaces.Message' in event)
diff --git a/tests/middleware/tests.py b/tests/middleware/tests.py
index d81a927..76953dd 100644
--- a/tests/middleware/tests.py
+++ b/tests/middleware/tests.py
@@ -93,7 +93,7 @@ class MiddlewareTestCase(TestCase):
event = self.client.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
self.assertEquals(exc['type'], 'ValueError')
self.assertEquals(exc['value'], 'hello world')
self.assertEquals(event['level'], logging.ERROR)
@@ -140,7 +140,7 @@ class MiddlewareTestCase(TestCase):
event = self.client.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
self.assertEquals(exc['type'], 'SystemExit')
self.assertEquals(exc['value'], '1')
self.assertEquals(event['level'], logging.ERROR)
@@ -160,7 +160,7 @@ class MiddlewareTestCase(TestCase):
event = self.client.events.pop(0)
assert 'exception' in event
- exc = event['exception']['values'][0]
+ exc = event['exception']['values'][-1]
self.assertEquals(exc['type'], 'KeyboardInterrupt')
self.assertEquals(exc['value'], '')
self.assertEquals(event['level'], logging.ERROR)
diff --git a/tests/processors/tests.py b/tests/processors/tests.py
index a38cc56..c4c5f52 100644
--- a/tests/processors/tests.py
+++ b/tests/processors/tests.py
@@ -127,12 +127,12 @@ class SanitizePasswordsProcessorTest(TestCase):
proc = SanitizePasswordsProcessor(Mock())
result = proc.process(data)
- # data['exception']['values'][0]['stacktrace']['frames'][0]['vars']
+ # data['exception']['values'][-1]['stacktrace']['frames'][0]['vars']
self.assertTrue('exception' in result)
exception = result['exception']
self.assertTrue('values' in exception)
values = exception['values']
- stack = values[0]['stacktrace']
+ stack = values[-1]['stacktrace']
self.assertTrue('frames' in stack)
self.assertEquals(len(stack['frames']), 2)