diff --git a/CHANGELOG.md b/CHANGELOG.md index cfb5df6d15..2b67cb78ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Unreleased * Fix: Use 'navigation' instead of 'ui.load' for auto transaction operation (#675) +* Fix: Use correct data/extras type in tracer (#693) # 6.3.0-alpha.1 diff --git a/dart/lib/src/sentry_tracer.dart b/dart/lib/src/sentry_tracer.dart index 88988875e6..d6a37eda07 100644 --- a/dart/lib/src/sentry_tracer.dart +++ b/dart/lib/src/sentry_tracer.dart @@ -13,7 +13,7 @@ class SentryTracer extends ISentrySpan { late final SentrySpan _rootSpan; final List _children = []; - final Map _extra = {}; + final Map _extra = {}; Timer? _autoFinishAfterTimer; var _finishStatus = SentryTracerFinishStatus.notFinishing(); @@ -81,7 +81,7 @@ class SentryTracer extends ISentrySpan { } @override - void setData(String key, value) { + void setData(String key, dynamic value) { if (finished) { return; } @@ -153,7 +153,7 @@ class SentryTracer extends ISentrySpan { @override DateTime? get endTimestamp => _rootSpan.endTimestamp; - Map get data => Map.unmodifiable(_extra); + Map get data => Map.unmodifiable(_extra); @override bool get finished => _rootSpan.finished; diff --git a/dart/test/sentry_tracer_test.dart b/dart/test/sentry_tracer_test.dart index 39812f559c..9f41214f8d 100644 --- a/dart/test/sentry_tracer_test.dart +++ b/dart/test/sentry_tracer_test.dart @@ -71,6 +71,18 @@ void main() { expect(tr.extra?['test'], isNull); }); + test('tracer sets non-string data to extra', () async { + final sut = fixture.getSut(); + + sut.setData('test', {'key': 'value'}); + + await sut.finish(status: SpanStatus.aborted()); + + final tr = fixture.hub.captureTransactionCalls.first; + + expect(tr.extra?['test'], {'key': 'value'}); + }); + test('tracer starts child', () async { final sut = fixture.getSut();