diff options
author | Johan Steffner <johan@agigen.se> | 2016-10-27 09:40:11 +0200 |
---|---|---|
committer | Johan Steffner <johan@agigen.se> | 2016-10-27 13:48:32 +0200 |
commit | 1fd8bb66ae91c6340c68ca82bbe05f8ee0329273 (patch) | |
tree | 690f6a5d32032cc01c2986d8e38cfc3083f2252e | |
parent | d5f675be3a3658df6206756183bbd4d192c230cd (diff) | |
download | raven-1fd8bb66ae91c6340c68ca82bbe05f8ee0329273.tar.gz |
Update event values order for exceptions
-rw-r--r-- | raven/base.py | 6 | ||||
-rw-r--r-- | raven/events.py | 4 | ||||
-rw-r--r-- | tests/base/tests.py | 10 | ||||
-rw-r--r-- | tests/contrib/bottle/tests.py | 2 | ||||
-rw-r--r-- | tests/contrib/django/tests.py | 16 | ||||
-rw-r--r-- | tests/contrib/flask/tests.py | 2 | ||||
-rw-r--r-- | tests/contrib/test_celery.py | 2 | ||||
-rw-r--r-- | tests/contrib/webpy/tests.py | 2 | ||||
-rw-r--r-- | tests/events/tests.py | 10 | ||||
-rw-r--r-- | tests/handlers/logbook/tests.py | 2 | ||||
-rw-r--r-- | tests/handlers/logging/tests.py | 2 | ||||
-rw-r--r-- | tests/middleware/tests.py | 6 | ||||
-rw-r--r-- | tests/processors/tests.py | 4 |
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) |