Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(357)

Side by Side Diff: test/frame_test.dart

Issue 912043002: Better suqpport for async VM frames. (Closed) Base URL: git@github.com:dart-lang/stack_trace@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pubspec.yaml ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 library frame_test; 5 library frame_test;
6 6
7 import 'package:path/path.dart' as path; 7 import 'package:path/path.dart' as path;
8 import 'package:stack_trace/stack_trace.dart'; 8 import 'package:stack_trace/stack_trace.dart';
9 import 'package:unittest/unittest.dart'; 9 import 'package:unittest/unittest.dart';
10 10
(...skipping 12 matching lines...) Expand all
23 test('parses a stack frame without column correctly', () { 23 test('parses a stack frame without column correctly', () {
24 var frame = new Frame.parseVM("#1 Foo._bar " 24 var frame = new Frame.parseVM("#1 Foo._bar "
25 "(file:///home/nweiz/code/stuff.dart:24)"); 25 "(file:///home/nweiz/code/stuff.dart:24)");
26 expect(frame.uri, 26 expect(frame.uri,
27 equals(Uri.parse("file:///home/nweiz/code/stuff.dart"))); 27 equals(Uri.parse("file:///home/nweiz/code/stuff.dart")));
28 expect(frame.line, equals(24)); 28 expect(frame.line, equals(24));
29 expect(frame.column, null); 29 expect(frame.column, null);
30 expect(frame.member, equals('Foo._bar')); 30 expect(frame.member, equals('Foo._bar'));
31 }); 31 });
32 32
33 // This can happen with async stack traces. See issue 22009.
34 test('parses a stack frame without line or column correctly', () {
35 var frame = new Frame.parseVM("#1 Foo._bar "
36 "(file:///home/nweiz/code/stuff.dart)");
37 expect(frame.uri,
38 equals(Uri.parse("file:///home/nweiz/code/stuff.dart")));
39 expect(frame.line, isNull);
40 expect(frame.column, isNull);
41 expect(frame.member, equals('Foo._bar'));
42 });
43
33 test('converts "<anonymous closure>" to "<fn>"', () { 44 test('converts "<anonymous closure>" to "<fn>"', () {
34 String parsedMember(String member) => 45 String parsedMember(String member) =>
35 new Frame.parseVM('#0 $member (foo:0:0)').member; 46 new Frame.parseVM('#0 $member (foo:0:0)').member;
36 47
37 expect(parsedMember('Foo.<anonymous closure>'), equals('Foo.<fn>')); 48 expect(parsedMember('Foo.<anonymous closure>'), equals('Foo.<fn>'));
38 expect(parsedMember('<anonymous closure>.<anonymous closure>.bar'), 49 expect(parsedMember('<anonymous closure>.<anonymous closure>.bar'),
39 equals('<fn>.<fn>.bar')); 50 equals('<fn>.<fn>.bar'));
40 }); 51 });
41 52
53 test('converts "<<anonymous closure>_async_body>" to "<async>"', () {
54 var frame = new Frame.parseVM(
55 '#0 Foo.<<anonymous closure>_async_body> (foo:0:0)');
56 expect(frame.member, equals('Foo.<async>'));
57 });
58
59 test('converts "<<anonymous closure>_async_body>" to "<async>"', () {
60 var frame = new Frame.parseVM(
61 '#0 Foo.<<anonymous closure>_async_body> (foo:0:0)');
62 expect(frame.member, equals('Foo.<async>'));
63 });
64
42 test('parses a folded frame correctly', () { 65 test('parses a folded frame correctly', () {
43 var frame = new Frame.parseVM('...'); 66 var frame = new Frame.parseVM('...');
44 67
45 expect(frame.member, equals('...')); 68 expect(frame.member, equals('...'));
46 expect(frame.uri, equals(new Uri())); 69 expect(frame.uri, equals(new Uri()));
47 expect(frame.line, isNull); 70 expect(frame.line, isNull);
48 expect(frame.column, isNull); 71 expect(frame.column, isNull);
49 }); 72 });
50 73
51 test('throws a FormatException for malformed frames', () { 74 test('throws a FormatException for malformed frames', () {
52 expect(() => new Frame.parseVM(''), throwsFormatException); 75 expect(() => new Frame.parseVM(''), throwsFormatException);
53 expect(() => new Frame.parseVM('#1'), throwsFormatException); 76 expect(() => new Frame.parseVM('#1'), throwsFormatException);
54 expect(() => new Frame.parseVM('#1 Foo'), throwsFormatException); 77 expect(() => new Frame.parseVM('#1 Foo'), throwsFormatException);
55 expect(() => new Frame.parseVM('#1 Foo (dart:async/future.dart)'),
56 throwsFormatException);
57 expect(() => new Frame.parseVM('#1 (dart:async/future.dart:10:15)'), 78 expect(() => new Frame.parseVM('#1 (dart:async/future.dart:10:15)'),
58 throwsFormatException); 79 throwsFormatException);
59 expect(() => new Frame.parseVM('Foo (dart:async/future.dart:10:15)'), 80 expect(() => new Frame.parseVM('Foo (dart:async/future.dart:10:15)'),
60 throwsFormatException); 81 throwsFormatException);
61 }); 82 });
62 }); 83 });
63 84
64 group('.parseV8', () { 85 group('.parseV8', () {
65 test('parses a stack frame correctly', () { 86 test('parses a stack frame correctly', () {
66 var frame = new Frame.parseV8(" at VW.call\$0 " 87 var frame = new Frame.parseV8(" at VW.call\$0 "
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 equals('dart:core/uri.dart 5 in Foo')); 546 equals('dart:core/uri.dart 5 in Foo'));
526 }); 547 });
527 548
528 test('prints relative paths as relative', () { 549 test('prints relative paths as relative', () {
529 var relative = path.normalize('relative/path/to/foo.dart'); 550 var relative = path.normalize('relative/path/to/foo.dart');
530 expect(new Frame.parseFriendly('$relative 5:10 Foo').toString(), 551 expect(new Frame.parseFriendly('$relative 5:10 Foo').toString(),
531 equals('$relative 5:10 in Foo')); 552 equals('$relative 5:10 in Foo'));
532 }); 553 });
533 }); 554 });
534 } 555 }
OLDNEW
« no previous file with comments | « pubspec.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698