| Index: pkg/stack_trace/test/chain_test.dart
|
| diff --git a/pkg/stack_trace/test/chain_test.dart b/pkg/stack_trace/test/chain_test.dart
|
| index 9c166909e1f65f741a0d774bb445d28ffe7ed355..d9915ebf1f9767c21b1c8890bd95471d73730b3f 100644
|
| --- a/pkg/stack_trace/test/chain_test.dart
|
| +++ b/pkg/stack_trace/test/chain_test.dart
|
| @@ -387,7 +387,7 @@ void main() {
|
| 'dart:core Bar.baz\n'));
|
| });
|
|
|
| - test("doesn't return in an empty chain", () {
|
| + test("doesn't return an empty chain", () {
|
| var chain = new Chain([
|
| new Trace.parse(
|
| 'dart:core 10:11 Foo.bar\n'
|
| @@ -403,6 +403,67 @@ void main() {
|
| });
|
| });
|
|
|
| + group('Chain.foldFrames', () {
|
| + test('folds each trace', () {
|
| + var chain = new Chain([
|
| + new Trace.parse(
|
| + 'a.dart 10:11 Foo.bar\n'
|
| + 'a.dart 10:11 Bar.baz\n'
|
| + 'b.dart 10:11 Bang.qux\n'
|
| + 'a.dart 10:11 Zip.zap\n'
|
| + 'a.dart 10:11 Zop.zoop'),
|
| + new Trace.parse(
|
| + 'a.dart 10:11 Foo.bar\n'
|
| + 'a.dart 10:11 Bar.baz\n'
|
| + 'a.dart 10:11 Bang.qux\n'
|
| + 'a.dart 10:11 Zip.zap\n'
|
| + 'b.dart 10:11 Zop.zoop')
|
| + ]);
|
| +
|
| + var folded = chain.foldFrames((frame) => frame.library == 'a.dart');
|
| + expect(folded.toString(), equals(
|
| + 'a.dart 10:11 Bar.baz\n'
|
| + 'b.dart 10:11 Bang.qux\n'
|
| + 'a.dart 10:11 Zop.zoop\n'
|
| + '===== asynchronous gap ===========================\n'
|
| + 'a.dart 10:11 Zip.zap\n'
|
| + 'b.dart 10:11 Zop.zoop\n'));
|
| + });
|
| +
|
| + test('eliminates completely-folded traces', () {
|
| + var chain = new Chain([
|
| + new Trace.parse(
|
| + 'a.dart 10:11 Foo.bar\n'
|
| + 'b.dart 10:11 Bang.qux'),
|
| + new Trace.parse(
|
| + 'a.dart 10:11 Foo.bar\n'
|
| + 'a.dart 10:11 Bang.qux'),
|
| + new Trace.parse(
|
| + 'a.dart 10:11 Zip.zap\n'
|
| + 'b.dart 10:11 Zop.zoop')
|
| + ]);
|
| +
|
| + var folded = chain.foldFrames((frame) => frame.library == 'a.dart');
|
| + expect(folded.toString(), equals(
|
| + 'a.dart 10:11 Foo.bar\n'
|
| + 'b.dart 10:11 Bang.qux\n'
|
| + '===== asynchronous gap ===========================\n'
|
| + 'a.dart 10:11 Zip.zap\n'
|
| + 'b.dart 10:11 Zop.zoop\n'));
|
| + });
|
| +
|
| + test("doesn't return an empty trace", () {
|
| + var chain = new Chain([
|
| + new Trace.parse(
|
| + 'a.dart 10:11 Foo.bar\n'
|
| + 'a.dart 10:11 Bang.qux')
|
| + ]);
|
| +
|
| + var folded = chain.foldFrames((frame) => frame.library == 'a.dart');
|
| + expect(folded.toString(), equals('a.dart 10:11 Bang.qux\n'));
|
| + });
|
| + });
|
| +
|
| test('Chain.toTrace eliminates asynchronous gaps', () {
|
| var trace = new Chain([
|
| new Trace.parse(
|
|
|