Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
change to static function
  • Loading branch information
denrase committed May 22, 2023
commit 4d1ac362c921f41a98e0fac1cad2e80682313885
3 changes: 1 addition & 2 deletions dart/lib/src/sentry_exception_factory.dart
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,11 @@ class SentryExceptionFactory {
}
}

final stackTraceUtils = StackTraceUtils(throwable.toString());
// if --obfuscate feature is enabled, 'type' won't be human readable.
// https://flutter.dev/docs/deployment/obfuscate#caveat
return SentryException(
type: (throwable.runtimeType).toString(),
value: stackTraceUtils.removeStackStraceLines(),
value: StackTraceUtils.removeStackStraceLines(throwable.toString()),
mechanism: mechanism,
stackTrace: sentryStackTrace,
throwable: throwable,
Expand Down
14 changes: 5 additions & 9 deletions dart/lib/src/utils/stack_trace_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,15 @@ import 'package:meta/meta.dart';

@internal
class StackTraceUtils {
StackTraceUtils(this.input);

final String input;

late final _stackStackTrace =
static final _stackStackTrace =
RegExp(r'^#\d+.*\.dart:\d+:\d+\)$', multiLine: true);
late final _flutterStackTrace =
static final _flutterStackTrace =
RegExp(r'^flutter:\s#\d+.*\.dart:\d+:\d+\)$', multiLine: true);
late final _obfuscatedStackTrace =
static final _obfuscatedStackTrace =
RegExp(r'^#\d+.*\+0x\w+$', multiLine: true);
late final _multipleNewlines = RegExp(r'\n+');
static final _multipleNewlines = RegExp(r'\n+');

String removeStackStraceLines() {
static String removeStackStraceLines(String input) {
return input
.replaceAll(_stackStackTrace, '')
.replaceAll(_flutterStackTrace, '')
Expand Down
28 changes: 8 additions & 20 deletions dart/test/utils/stack_trace_utils_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@ import 'package:sentry/src/utils/stack_trace_utils.dart';
import 'package:test/test.dart';

void main() {
late Fixture fixture;

setUp(() {
fixture = Fixture();
});

final dartStackTrace = '''
randomPrefix
#0 main (file:///Users/denis/Repos/other/dart-stacktrace/main.dart:2:20)
Expand Down Expand Up @@ -53,28 +47,22 @@ randomSuffix
final cleanedUp = 'randomPrefix\nrandomSuffix';

test('removes dart stack trace', () {
final sut = fixture.getSut(dartStackTrace);
expect(sut.removeStackStraceLines(), cleanedUp);
expect(StackTraceUtils.removeStackStraceLines(dartStackTrace), cleanedUp);
});

test('removes flutter stack trace', () {
final sut = fixture.getSut(flutterStackTrace);
expect(sut.removeStackStraceLines(), cleanedUp);
expect(
StackTraceUtils.removeStackStraceLines(flutterStackTrace), cleanedUp);
});

test('removes flutter obfuscated stack trace', () {
final sut = fixture.getSut(flutterObfuscatedStackTrace);
expect(sut.removeStackStraceLines(), cleanedUp);
expect(StackTraceUtils.removeStackStraceLines(flutterObfuscatedStackTrace),
cleanedUp);
});

test('removes stack trace with asynchronous suspension', () {
final sut = fixture.getSut(stackTraceWithAsyncSuspension);
expect(sut.removeStackStraceLines(), cleanedUp);
expect(
StackTraceUtils.removeStackStraceLines(stackTraceWithAsyncSuspension),
cleanedUp);
});
}

class Fixture {
StackTraceUtils getSut(String input) {
return StackTraceUtils(input);
}
}