From 5be739c3317bcdf6d445b622a2a688a29d67ee16 Mon Sep 17 00:00:00 2001 From: Matt Robenolt Date: Thu, 12 Nov 2015 17:41:12 -0800 Subject: [PATCH] Add tests --- tests/middleware/tests.py | 46 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tests/middleware/tests.py b/tests/middleware/tests.py index 23e94caa..8af14c6a 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')