summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Unterwaditzer <markus@unterwaditzer.net>2018-12-14 14:35:35 -0800
committerMarkus Unterwaditzer <markus@unterwaditzer.net>2018-12-14 14:46:14 -0800
commit69ee4a81d899dfe1e2500f286f3bd8309ede9eb2 (patch)
tree6989642bc33dbc4d5aa78268bab0d0b4a0d88d94
parent4206873d63c461ffe6944029d36951514157928e (diff)
downloadraven-69ee4a81d899dfe1e2500f286f3bd8309ede9eb2.tar.gz
fix: Dont serialize nan when present in vars
-rw-r--r--raven/utils/serializer/base.py12
-rw-r--r--tests/base/tests.py12
2 files changed, 23 insertions, 1 deletions
diff --git a/raven/utils/serializer/base.py b/raven/utils/serializer/base.py
index 92b2102..b4c97c5 100644
--- a/raven/utils/serializer/base.py
+++ b/raven/utils/serializer/base.py
@@ -174,7 +174,17 @@ class FloatSerializer(Serializer):
types = (float,)
def serialize(self, value, **kwargs):
- return float(value)
+ value = float(value)
+
+ if value == float('inf'):
+ return '<inf>'
+ if value == float('-inf'):
+ return '<-inf>'
+ # lol checking for float('nan')
+ if value != value:
+ return '<nan>'
+
+ return value
class IntegerSerializer(Serializer):
diff --git a/tests/base/tests.py b/tests/base/tests.py
index df03278..bed1c17 100644
--- a/tests/base/tests.py
+++ b/tests/base/tests.py
@@ -307,6 +307,18 @@ class ClientTest(TestCase):
self.assertEquals(frame['function'], 'test_exception_event')
self.assertTrue('timestamp' in event)
+ def test_exception_nan_in_vars(self):
+ try:
+ foo = float("nan") # noqa
+ raise ValueError("foo")
+ except ValueError:
+ self.client.captureException()
+
+ event, = self.client.events
+ exc, = event['exception']['values']
+ frame, = exc['stacktrace']['frames']
+ assert frame['vars']['foo'] == "<nan>"
+
def test_exception_event_true_exc_info(self):
try:
raise ValueError('foo')