diff options
author | Matt Robenolt <matt@ydekproductions.com> | 2015-11-12 17:41:12 -0800 |
---|---|---|
committer | Matt Robenolt <matt@ydekproductions.com> | 2015-11-12 17:41:12 -0800 |
commit | 5be739c3317bcdf6d445b622a2a688a29d67ee16 (patch) | |
tree | 4a50cf37fce1710b3c899d5b054629dfd02a5a72 | |
parent | 3eddaa4dffaad3861282568f02bc8ad966be2fd8 (diff) | |
download | raven-systemexit.tar.gz |
Add testssystemexit
-rw-r--r-- | tests/middleware/tests.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/middleware/tests.py b/tests/middleware/tests.py index 23e94ca..8af14c6 100644 --- a/tests/middleware/tests.py +++ b/tests/middleware/tests.py @@ -32,6 +32,14 @@ class ErroringIterable(object): self.closed = True +class ExitingIterable(ErroringIterable): + def __init__(self, code=0): + self._code = code + + def __iter__(self): + raise SystemExit(self._code) + + class ExampleApp(object): def __init__(self, iterable): self.iterable = iterable @@ -86,3 +94,41 @@ class MiddlewareTestCase(TestCase): self.assertEquals(env['SERVER_NAME'], 'localhost') self.assertTrue('SERVER_PORT' in env, env.keys()) self.assertEquals(env['SERVER_PORT'], '80') + + def test_systemexit_0_is_ignored(self): + iterable = ExitingIterable(code=0) + app = ExampleApp(iterable) + middleware = Sentry(app, client=self.client) + + response = middleware(self.request.environ, lambda *args: None) + + with self.assertRaises(SystemExit): + response = list(response) + + # TODO: this should be a separate test + self.assertTrue(iterable.closed, True) + + self.assertEquals(len(self.client.events), 0) + + def test_systemexit_is_captured(self): + iterable = ExitingIterable(code=1) + app = ExampleApp(iterable) + middleware = Sentry(app, client=self.client) + + response = middleware(self.request.environ, lambda *args: None) + + with self.assertRaises(SystemExit): + response = list(response) + + # TODO: this should be a separate test + self.assertTrue(iterable.closed, True) + + self.assertEquals(len(self.client.events), 1) + event = self.client.events.pop(0) + + assert 'exception' in event + exc = event['exception']['values'][0] + self.assertEquals(exc['type'], 'SystemExit') + self.assertEquals(exc['value'], '1') + self.assertEquals(event['level'], logging.ERROR) + self.assertEquals(event['message'], 'SystemExit: 1') |