diff --git a/raven/breadcrumbs.py b/raven/breadcrumbs.py index 99ff01385..90ed42740 100644 --- a/raven/breadcrumbs.py +++ b/raven/breadcrumbs.py @@ -141,6 +141,8 @@ def processor(data): # Extract 'extra' key from kwargs and merge into data extra = kwargs.pop('extra', {}) + if extra is None: + extra = {} data_value = kwargs data_value.update(extra) diff --git a/tests/breadcrumbs/tests.py b/tests/breadcrumbs/tests.py index 923f47937..709f48ad8 100644 --- a/tests/breadcrumbs/tests.py +++ b/tests/breadcrumbs/tests.py @@ -53,6 +53,17 @@ def test_log_crumb_reporting_with_dict(self): assert crumbs[0]['data'] == {'foo': 'bar', 'blah': 'baz'} assert crumbs[0]['message'] == 'This is a message with bar!' + def test_log_crumb_reporting_with_dict_extra_none(self): + """Don't raise an exception if extra is None""" + client = Client('http://foo:bar@example.com/0') + with client.context: + log = logging.getLogger('whatever.foo') + log.info('This is a message with %(foo)s!', {'foo': 'bar'}, + extra=None) + crumbs = client.context.breadcrumbs.get_buffer() + + assert len(crumbs) == 1 + def test_log_crumb_reporting_with_large_message(self): client = Client('http://foo:bar@example.com/0') with client.context: