Support Safari 6.1 stack traces with blank lines in pkg/stack_trace.
R=rnystrom@google.com
BUG=
Review URL: https://codereview.chromium.org//136693006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/stack_trace@31756 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkgs/stack_trace/lib/src/trace.dart b/pkgs/stack_trace/lib/src/trace.dart
index 45cb42c..21e8afc 100644
--- a/pkgs/stack_trace/lib/src/trace.dart
+++ b/pkgs/stack_trace/lib/src/trace.dart
@@ -164,6 +164,7 @@
/// Parses a string representation of a Safari 6.1+ stack trace.
Trace.parseSafari6_1(String trace)
: this(trace.trim().split("\n")
+ .where((line) => line.isNotEmpty)
.map((line) => new Frame.parseSafari6_1(line)));
/// Parses a string representation of a Safari 6.0 stack trace.
diff --git a/pkgs/stack_trace/test/trace_test.dart b/pkgs/stack_trace/test/trace_test.dart
index 4c3278f..eeeff28 100644
--- a/pkgs/stack_trace/test/trace_test.dart
+++ b/pkgs/stack_trace/test/trace_test.dart
@@ -160,6 +160,21 @@
equals(Uri.parse("http://pub.dartlang.org/thing.js")));
});
+ test('parses a Safari 6.1 stack trace with an empty line correctly', () {
+ var trace = new Trace.parse(
+ 'http://pub.dartlang.org/stuff.js:42:43\n'
+ '\n'
+ 'zip@http://pub.dartlang.org/stuff.js:0:1\n'
+ 'zip\$zap@http://pub.dartlang.org/thing.js:1:2');
+
+ expect(trace.frames[0].uri,
+ equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
+ expect(trace.frames[1].uri,
+ equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
+ expect(trace.frames[2].uri,
+ equals(Uri.parse("http://pub.dartlang.org/thing.js")));
+ });
+
test('parses a package:stack_trace stack trace correctly', () {
var trace = new Trace.parse(
'http://dartlang.org/foo/bar.dart 10:11 Foo.<fn>.bar\n'