OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:path/path.dart' as p; | 7 import 'package:path/path.dart' as p; |
8 import 'package:stack_trace/stack_trace.dart'; | 8 import 'package:stack_trace/stack_trace.dart'; |
9 import 'package:test/test.dart'; | 9 import 'package:test/test.dart'; |
10 | 10 |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 'package:stack_trace/stack_trace.dart 10:11 Bar.baz\n' | 102 'package:stack_trace/stack_trace.dart 10:11 Bar.baz\n' |
103 'dart:core 10:11 Zip.zap'), | 103 'dart:core 10:11 Zip.zap'), |
104 new Trace.parse( | 104 new Trace.parse( |
105 'dart:core 10:11 A.b\n' | 105 'dart:core 10:11 A.b\n' |
106 'package:stack_trace/stack_trace.dart 10:11 C.d\n' | 106 'package:stack_trace/stack_trace.dart 10:11 C.d\n' |
107 'dart:core 10:11 E.f') | 107 'dart:core 10:11 E.f') |
108 ]); | 108 ]); |
109 | 109 |
110 expect(chain.terse.toString(), equals('dart:core E.f\n')); | 110 expect(chain.terse.toString(), equals('dart:core E.f\n')); |
111 }); | 111 }); |
| 112 |
| 113 // Regression test for #9 |
| 114 test("doesn't crash on empty traces", () { |
| 115 var chain = new Chain([ |
| 116 new Trace.parse('user/code.dart 10:11 Bang.qux'), |
| 117 new Trace([]), |
| 118 new Trace.parse('user/code.dart 10:11 Bang.qux') |
| 119 ]); |
| 120 |
| 121 expect(chain.terse.toString(), equals( |
| 122 '$userSlashCode 10:11 Bang.qux\n' |
| 123 '===== asynchronous gap ===========================\n' |
| 124 '$userSlashCode 10:11 Bang.qux\n')); |
| 125 }); |
112 }); | 126 }); |
113 | 127 |
114 group('Chain.foldFrames', () { | 128 group('Chain.foldFrames', () { |
115 test('folds each trace', () { | 129 test('folds each trace', () { |
116 var chain = new Chain([ | 130 var chain = new Chain([ |
117 new Trace.parse( | 131 new Trace.parse( |
118 'a.dart 10:11 Foo.bar\n' | 132 'a.dart 10:11 Foo.bar\n' |
119 'a.dart 10:11 Bar.baz\n' | 133 'a.dart 10:11 Bar.baz\n' |
120 'b.dart 10:11 Bang.qux\n' | 134 'b.dart 10:11 Bang.qux\n' |
121 'a.dart 10:11 Zip.zap\n' | 135 'a.dart 10:11 Zip.zap\n' |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 controller = new StreamController()..addError('error', trace); | 287 controller = new StreamController()..addError('error', trace); |
274 expect(Chain.track(controller.stream).toList() | 288 expect(Chain.track(controller.stream).toList() |
275 .catchError((e, stackTrace) { | 289 .catchError((e, stackTrace) { |
276 expect(e, equals('error')); | 290 expect(e, equals('error')); |
277 expect(stackTrace.toString(), equals(trace.toString())); | 291 expect(stackTrace.toString(), equals(trace.toString())); |
278 }), completes); | 292 }), completes); |
279 }); | 293 }); |
280 }); | 294 }); |
281 }); | 295 }); |
282 } | 296 } |
OLD | NEW |