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

Side by Side Diff: packages/stack_trace/test/trace_test.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 4 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 | « packages/stack_trace/test/frame_test.dart ('k') | packages/stack_trace/test/utils.dart » ('j') | 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 trace_test;
6
7 import 'package:path/path.dart' as path; 5 import 'package:path/path.dart' as path;
8 import 'package:stack_trace/stack_trace.dart'; 6 import 'package:stack_trace/stack_trace.dart';
9 import 'package:test/test.dart'; 7 import 'package:test/test.dart';
10 8
11 String getStackTraceString() {
12 try {
13 throw '';
14 } catch (_, stackTrace) {
15 return stackTrace.toString();
16 }
17 }
18
19 StackTrace getStackTraceObject() {
20 try {
21 throw '';
22 } catch (_, stackTrace) {
23 return stackTrace;
24 }
25 }
26
27 Trace getCurrentTrace([int level]) => new Trace.current(level); 9 Trace getCurrentTrace([int level]) => new Trace.current(level);
28 10
29 Trace nestedGetCurrentTrace(int level) => getCurrentTrace(level); 11 Trace nestedGetCurrentTrace(int level) => getCurrentTrace(level);
30 12
31 void main() { 13 void main() {
32 // This just shouldn't crash. 14 // This just shouldn't crash.
33 test('a native stack trace is parseable', () => new Trace.current()); 15 test('a native stack trace is parseable', () => new Trace.current());
34 16
35 group('.parse', () { 17 group('.parse', () {
36 test('.parse parses a VM stack trace correctly', () { 18 test('.parse parses a VM stack trace correctly', () {
37 var trace = new Trace.parse( 19 var trace = new Trace.parse(
38 '#0 Foo._bar (file:///home/nweiz/code/stuff.dart:42:21)\n' 20 '#0 Foo._bar (file:///home/nweiz/code/stuff.dart:42:21)\n'
39 '#1 zip.<anonymous closure>.zap (dart:async/future.dart:0:2)\n' 21 '#1 zip.<anonymous closure>.zap (dart:async/future.dart:0:2)\n'
40 '#2 zip.<anonymous closure>.zap (http://pub.dartlang.org/thing.' 22 '#2 zip.<anonymous closure>.zap (http://pub.dartlang.org/thing.'
41 'dart:1:100)'); 23 'dart:1:100)');
42 24
43 expect(trace.frames[0].uri, 25 expect(trace.frames[0].uri,
44 equals(Uri.parse("file:///home/nweiz/code/stuff.dart"))); 26 equals(Uri.parse("file:///home/nweiz/code/stuff.dart")));
45 expect(trace.frames[1].uri, equals(Uri.parse("dart:async/future.dart"))); 27 expect(trace.frames[1].uri, equals(Uri.parse("dart:async/future.dart")));
46 expect(trace.frames[2].uri, 28 expect(trace.frames[2].uri,
47 equals(Uri.parse("http://pub.dartlang.org/thing.dart"))); 29 equals(Uri.parse("http://pub.dartlang.org/thing.dart")));
48 }); 30 });
49 31
50 test('parses a V8 stack trace correctly', () { 32 test('parses a V8 stack trace correctly', () {
51 var trace = new Trace.parse( 33 var trace = new Trace.parse('Error\n'
52 'Error\n'
53 ' at Foo._bar (http://pub.dartlang.org/stuff.js:42:21)\n' 34 ' at Foo._bar (http://pub.dartlang.org/stuff.js:42:21)\n'
54 ' at http://pub.dartlang.org/stuff.js:0:2\n' 35 ' at http://pub.dartlang.org/stuff.js:0:2\n'
55 ' at zip.<anonymous>.zap ' 36 ' at zip.<anonymous>.zap '
56 '(http://pub.dartlang.org/thing.js:1:100)'); 37 '(http://pub.dartlang.org/thing.js:1:100)');
57 38
58 expect(trace.frames[0].uri, 39 expect(trace.frames[0].uri,
59 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 40 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
60 expect(trace.frames[1].uri, 41 expect(trace.frames[1].uri,
61 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 42 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
62 expect(trace.frames[2].uri, 43 expect(trace.frames[2].uri,
63 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 44 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
64 45
65 trace = new Trace.parse( 46 trace = new Trace.parse("Exception: foo\n"
66 "Exception: foo\n"
67 ' at Foo._bar (http://pub.dartlang.org/stuff.js:42:21)\n' 47 ' at Foo._bar (http://pub.dartlang.org/stuff.js:42:21)\n'
68 ' at http://pub.dartlang.org/stuff.js:0:2\n' 48 ' at http://pub.dartlang.org/stuff.js:0:2\n'
69 ' at zip.<anonymous>.zap ' 49 ' at zip.<anonymous>.zap '
70 '(http://pub.dartlang.org/thing.js:1:100)'); 50 '(http://pub.dartlang.org/thing.js:1:100)');
71 51
72 expect(trace.frames[0].uri, 52 expect(trace.frames[0].uri,
73 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 53 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
74 expect(trace.frames[1].uri, 54 expect(trace.frames[1].uri,
75 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 55 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
76 expect(trace.frames[2].uri, 56 expect(trace.frames[2].uri,
77 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 57 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
78 58
79 trace = new Trace.parse( 59 trace = new Trace.parse('Exception: foo\n'
80 'Exception: foo\n'
81 ' bar\n' 60 ' bar\n'
82 ' at Foo._bar (http://pub.dartlang.org/stuff.js:42:21)\n' 61 ' at Foo._bar (http://pub.dartlang.org/stuff.js:42:21)\n'
83 ' at http://pub.dartlang.org/stuff.js:0:2\n' 62 ' at http://pub.dartlang.org/stuff.js:0:2\n'
84 ' at zip.<anonymous>.zap ' 63 ' at zip.<anonymous>.zap '
85 '(http://pub.dartlang.org/thing.js:1:100)'); 64 '(http://pub.dartlang.org/thing.js:1:100)');
86 65
87 expect(trace.frames[0].uri, 66 expect(trace.frames[0].uri,
88 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 67 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
89 expect(trace.frames[1].uri, 68 expect(trace.frames[1].uri,
90 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 69 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
91 expect(trace.frames[2].uri, 70 expect(trace.frames[2].uri,
92 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 71 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
72
73 trace = new Trace.parse('Exception: foo\n'
74 ' bar\n'
75 ' at Foo._bar (http://pub.dartlang.org/stuff.js:42:21)\n'
76 ' at http://pub.dartlang.org/stuff.js:0:2\n'
77 ' at (anonymous function).zip.zap '
78 '(http://pub.dartlang.org/thing.js:1:100)');
79
80 expect(trace.frames[0].uri,
81 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
82 expect(trace.frames[1].uri,
83 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
84 expect(trace.frames[1].member, equals("<fn>"));
85 expect(trace.frames[2].uri,
86 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
87 expect(trace.frames[2].member, equals("<fn>.zip.zap"));
93 }); 88 });
94 89
95 // JavaScriptCore traces are just like V8, except that it doesn't have a 90 // JavaScriptCore traces are just like V8, except that it doesn't have a
96 // header and it starts with a tab rather than spaces. 91 // header and it starts with a tab rather than spaces.
97 test('parses a JavaScriptCore stack trace correctly', () { 92 test('parses a JavaScriptCore stack trace correctly', () {
98 var trace = new Trace.parse( 93 var trace = new Trace.parse(
99 '\tat Foo._bar (http://pub.dartlang.org/stuff.js:42:21)\n' 94 '\tat Foo._bar (http://pub.dartlang.org/stuff.js:42:21)\n'
100 '\tat http://pub.dartlang.org/stuff.js:0:2\n' 95 '\tat http://pub.dartlang.org/stuff.js:0:2\n'
101 '\tat zip.<anonymous>.zap ' 96 '\tat zip.<anonymous>.zap '
102 '(http://pub.dartlang.org/thing.js:1:100)'); 97 '(http://pub.dartlang.org/thing.js:1:100)');
103 98
104 expect(trace.frames[0].uri, 99 expect(trace.frames[0].uri,
105 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 100 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
106 expect(trace.frames[1].uri, 101 expect(trace.frames[1].uri,
107 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 102 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
108 expect(trace.frames[2].uri, 103 expect(trace.frames[2].uri,
109 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 104 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
110 105
111 trace = new Trace.parse( 106 trace = new Trace.parse(
112 '\tat Foo._bar (http://pub.dartlang.org/stuff.js:42:21)\n' 107 '\tat Foo._bar (http://pub.dartlang.org/stuff.js:42:21)\n'
113 '\tat \n' 108 '\tat \n'
114 '\tat zip.<anonymous>.zap ' 109 '\tat zip.<anonymous>.zap '
115 '(http://pub.dartlang.org/thing.js:1:100)'); 110 '(http://pub.dartlang.org/thing.js:1:100)');
116 111
117 expect(trace.frames[0].uri, 112 expect(trace.frames[0].uri,
118 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 113 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
119 expect(trace.frames[1].uri, 114 expect(trace.frames[1].uri,
120 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 115 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
121 }); 116 });
122 117
123 test('parses a Firefox/Safari stack trace correctly', () { 118 test('parses a Firefox/Safari stack trace correctly', () {
124 var trace = new Trace.parse( 119 var trace =
125 'Foo._bar@http://pub.dartlang.org/stuff.js:42\n' 120 new Trace.parse('Foo._bar@http://pub.dartlang.org/stuff.js:42\n'
126 'zip/<@http://pub.dartlang.org/stuff.js:0\n' 121 'zip/<@http://pub.dartlang.org/stuff.js:0\n'
127 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1'); 122 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1');
128 123
129 expect(trace.frames[0].uri, 124 expect(trace.frames[0].uri,
130 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 125 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
131 expect(trace.frames[1].uri, 126 expect(trace.frames[1].uri,
132 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 127 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
133 expect(trace.frames[2].uri, 128 expect(trace.frames[2].uri,
134 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 129 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
135 130
136 trace = new Trace.parse( 131 trace = new Trace.parse('zip/<@http://pub.dartlang.org/stuff.js:0\n'
137 'zip/<@http://pub.dartlang.org/stuff.js:0\n'
138 'Foo._bar@http://pub.dartlang.org/stuff.js:42\n' 132 'Foo._bar@http://pub.dartlang.org/stuff.js:42\n'
139 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1'); 133 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1');
140 134
141 expect(trace.frames[0].uri, 135 expect(trace.frames[0].uri,
142 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 136 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
143 expect(trace.frames[1].uri, 137 expect(trace.frames[1].uri,
144 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 138 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
145 expect(trace.frames[2].uri, 139 expect(trace.frames[2].uri,
146 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 140 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
147 141
148 trace = new Trace.parse( 142 trace = new Trace.parse(
149 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1\n' 143 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1\n'
150 'zip/<@http://pub.dartlang.org/stuff.js:0\n' 144 'zip/<@http://pub.dartlang.org/stuff.js:0\n'
151 'Foo._bar@http://pub.dartlang.org/stuff.js:42'); 145 'Foo._bar@http://pub.dartlang.org/stuff.js:42');
152 146
153 expect(trace.frames[0].uri, 147 expect(trace.frames[0].uri,
154 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 148 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
155 expect(trace.frames[1].uri, 149 expect(trace.frames[1].uri,
156 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 150 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
157 expect(trace.frames[2].uri, 151 expect(trace.frames[2].uri,
158 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 152 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
159 }); 153 });
160 154
161 test('parses a Firefox/Safari stack trace containing native code correctly', 155 test('parses a Firefox/Safari stack trace containing native code correctly',
162 () { 156 () {
163 var trace = new Trace.parse( 157 var trace =
164 'Foo._bar@http://pub.dartlang.org/stuff.js:42\n' 158 new Trace.parse('Foo._bar@http://pub.dartlang.org/stuff.js:42\n'
165 'zip/<@http://pub.dartlang.org/stuff.js:0\n' 159 'zip/<@http://pub.dartlang.org/stuff.js:0\n'
166 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1\n' 160 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1\n'
167 '[native code]'); 161 '[native code]');
168 162
169 expect(trace.frames[0].uri, 163 expect(trace.frames[0].uri,
170 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 164 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
171 expect(trace.frames[1].uri, 165 expect(trace.frames[1].uri,
172 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 166 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
173 expect(trace.frames[2].uri, 167 expect(trace.frames[2].uri,
174 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 168 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
175 expect(trace.frames.length, equals(3)); 169 expect(trace.frames.length, equals(3));
176 }); 170 });
177 171
178 test('parses a Firefox/Safari stack trace without a method name correctly', 172 test('parses a Firefox/Safari stack trace without a method name correctly',
179 () { 173 () {
180 var trace = new Trace.parse( 174 var trace = new Trace.parse('http://pub.dartlang.org/stuff.js:42\n'
181 'http://pub.dartlang.org/stuff.js:42\n'
182 'zip/<@http://pub.dartlang.org/stuff.js:0\n' 175 'zip/<@http://pub.dartlang.org/stuff.js:0\n'
183 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1'); 176 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1');
184 177
185 expect(trace.frames[0].uri, 178 expect(trace.frames[0].uri,
186 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 179 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
187 expect(trace.frames[0].member, equals('<fn>')); 180 expect(trace.frames[0].member, equals('<fn>'));
188 expect(trace.frames[1].uri, 181 expect(trace.frames[1].uri,
189 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 182 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
190 expect(trace.frames[2].uri, 183 expect(trace.frames[2].uri,
191 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 184 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
192 }); 185 });
193 186
194 test('parses a Firefox/Safari stack trace with an empty line correctly', 187 test('parses a Firefox/Safari stack trace with an empty line correctly',
195 () { 188 () {
196 var trace = new Trace.parse( 189 var trace =
197 'Foo._bar@http://pub.dartlang.org/stuff.js:42\n' 190 new Trace.parse('Foo._bar@http://pub.dartlang.org/stuff.js:42\n'
198 '\n' 191 '\n'
199 'zip/<@http://pub.dartlang.org/stuff.js:0\n' 192 'zip/<@http://pub.dartlang.org/stuff.js:0\n'
200 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1'); 193 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1');
201 194
202 expect(trace.frames[0].uri, 195 expect(trace.frames[0].uri,
203 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 196 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
204 expect(trace.frames[1].uri, 197 expect(trace.frames[1].uri,
205 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 198 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
206 expect(trace.frames[2].uri, 199 expect(trace.frames[2].uri,
207 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 200 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
208 }); 201 });
209 202
210 test('parses a Firefox/Safari stack trace with a column number correctly', 203 test('parses a Firefox/Safari stack trace with a column number correctly',
211 () { 204 () {
212 var trace = new Trace.parse( 205 var trace =
213 'Foo._bar@http://pub.dartlang.org/stuff.js:42:2\n' 206 new Trace.parse('Foo._bar@http://pub.dartlang.org/stuff.js:42:2\n'
214 'zip/<@http://pub.dartlang.org/stuff.js:0\n' 207 'zip/<@http://pub.dartlang.org/stuff.js:0\n'
215 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1'); 208 'zip.zap(12, "@)()/<")@http://pub.dartlang.org/thing.js:1');
216 209
217 expect(trace.frames[0].uri, 210 expect(trace.frames[0].uri,
218 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 211 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
219 expect(trace.frames[0].line, equals(42)); 212 expect(trace.frames[0].line, equals(42));
220 expect(trace.frames[0].column, equals(2)); 213 expect(trace.frames[0].column, equals(2));
221 expect(trace.frames[1].uri, 214 expect(trace.frames[1].uri,
222 equals(Uri.parse("http://pub.dartlang.org/stuff.js"))); 215 equals(Uri.parse("http://pub.dartlang.org/stuff.js")));
223 expect(trace.frames[2].uri, 216 expect(trace.frames[2].uri,
224 equals(Uri.parse("http://pub.dartlang.org/thing.js"))); 217 equals(Uri.parse("http://pub.dartlang.org/thing.js")));
225 }); 218 });
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 }); 273 });
281 274
282 test('.vmTrace returns a native-style trace', () { 275 test('.vmTrace returns a native-style trace', () {
283 var uri = path.toUri(path.absolute('foo')); 276 var uri = path.toUri(path.absolute('foo'));
284 var trace = new Trace([ 277 var trace = new Trace([
285 new Frame(uri, 10, 20, 'Foo.<fn>'), 278 new Frame(uri, 10, 20, 'Foo.<fn>'),
286 new Frame(Uri.parse('http://dartlang.org/foo.dart'), null, null, 'bar'), 279 new Frame(Uri.parse('http://dartlang.org/foo.dart'), null, null, 'bar'),
287 new Frame(Uri.parse('dart:async'), 15, null, 'baz'), 280 new Frame(Uri.parse('dart:async'), 15, null, 'baz'),
288 ]); 281 ]);
289 282
290 expect(trace.vmTrace.toString(), equals( 283 expect(
291 '#1 Foo.<anonymous closure> ($uri:10:20)\n' 284 trace.vmTrace.toString(),
292 '#2 bar (http://dartlang.org/foo.dart:0:0)\n' 285 equals('#1 Foo.<anonymous closure> ($uri:10:20)\n'
293 '#3 baz (dart:async:15:0)\n')); 286 '#2 bar (http://dartlang.org/foo.dart:0:0)\n'
287 '#3 baz (dart:async:15:0)\n'));
294 }); 288 });
295 289
296 group("folding", () { 290 group("folding", () {
297 test('.terse folds core frames together bottom-up', () { 291 group(".terse", () {
298 var trace = new Trace.parse(''' 292 test('folds core frames together bottom-up', () {
293 var trace = new Trace.parse('''
299 #1 top (dart:async/future.dart:0:2) 294 #1 top (dart:async/future.dart:0:2)
300 #2 bottom (dart:core/uri.dart:1:100) 295 #2 bottom (dart:core/uri.dart:1:100)
301 #0 notCore (foo.dart:42:21) 296 #0 notCore (foo.dart:42:21)
302 #3 top (dart:io:5:10) 297 #3 top (dart:io:5:10)
303 #4 bottom (dart:async-patch/future.dart:9:11) 298 #4 bottom (dart:async-patch/future.dart:9:11)
304 #5 alsoNotCore (bar.dart:10:20) 299 #5 alsoNotCore (bar.dart:10:20)
305 '''); 300 ''');
306 301
307 expect(trace.terse.toString(), equals(''' 302 expect(trace.terse.toString(), equals('''
308 dart:core bottom 303 dart:core bottom
309 foo.dart 42:21 notCore 304 foo.dart 42:21 notCore
310 dart:async bottom 305 dart:async bottom
311 bar.dart 10:20 alsoNotCore 306 bar.dart 10:20 alsoNotCore
312 ''')); 307 '''));
313 }); 308 });
314 309
315 test('.terse folds empty async frames', () { 310 test('folds empty async frames', () {
316 var trace = new Trace.parse(''' 311 var trace = new Trace.parse('''
317 #0 top (dart:async/future.dart:0:2) 312 #0 top (dart:async/future.dart:0:2)
318 #1 empty.<<anonymous closure>_async_body> (bar.dart) 313 #1 empty.<<anonymous closure>_async_body> (bar.dart)
319 #2 bottom (dart:async-patch/future.dart:9:11) 314 #2 bottom (dart:async-patch/future.dart:9:11)
320 #3 notCore (foo.dart:42:21) 315 #3 notCore (foo.dart:42:21)
321 '''); 316 ''');
322 317
323 expect(trace.terse.toString(), equals(''' 318 expect(trace.terse.toString(), equals('''
324 dart:async bottom 319 dart:async bottom
325 foo.dart 42:21 notCore 320 foo.dart 42:21 notCore
326 ''')); 321 '''));
327 }); 322 });
328 323
329 test('.terse removes the bottom-most async frame', () { 324 test('removes the bottom-most async frame', () {
330 var trace = new Trace.parse(''' 325 var trace = new Trace.parse('''
331 #0 notCore (foo.dart:42:21) 326 #0 notCore (foo.dart:42:21)
332 #1 top (dart:async/future.dart:0:2) 327 #1 top (dart:async/future.dart:0:2)
333 #2 bottom (dart:core/uri.dart:1:100) 328 #2 bottom (dart:core/uri.dart:1:100)
334 #3 top (dart:io:5:10) 329 #3 top (dart:io:5:10)
335 #4 bottom (dart:async-patch/future.dart:9:11) 330 #4 bottom (dart:async-patch/future.dart:9:11)
336 '''); 331 ''');
337 332
338 expect(trace.terse.toString(), equals(''' 333 expect(trace.terse.toString(), equals('''
339 foo.dart 42:21 notCore 334 foo.dart 42:21 notCore
340 ''')); 335 '''));
341 }); 336 });
342 337
343 test(".terse won't make a trace empty", () { 338 test("won't make a trace empty", () {
344 var trace = new Trace.parse(''' 339 var trace = new Trace.parse('''
345 #1 top (dart:async/future.dart:0:2) 340 #1 top (dart:async/future.dart:0:2)
346 #2 bottom (dart:core/uri.dart:1:100) 341 #2 bottom (dart:core/uri.dart:1:100)
347 '''); 342 ''');
348 343
349 expect(trace.terse.toString(), equals(''' 344 expect(trace.terse.toString(), equals('''
350 dart:core bottom 345 dart:core bottom
351 ''')); 346 '''));
347 });
348
349 test("won't panic on an empty trace", () {
350 expect(new Trace.parse("").terse.toString(), equals(""));
351 });
352 }); 352 });
353 353
354 test(".terse won't panic on an empty trace", () { 354 group(".foldFrames", () {
355 expect(new Trace.parse("").terse.toString(), equals("")); 355 test('folds frames together bottom-up', () {
356 }); 356 var trace = new Trace.parse('''
357
358 test('.foldFrames folds frames together bottom-up', () {
359 var trace = new Trace.parse('''
360 #0 notFoo (foo.dart:42:21) 357 #0 notFoo (foo.dart:42:21)
361 #1 fooTop (bar.dart:0:2) 358 #1 fooTop (bar.dart:0:2)
362 #2 fooBottom (foo.dart:1:100) 359 #2 fooBottom (foo.dart:1:100)
363 #3 alsoNotFoo (bar.dart:10:20) 360 #3 alsoNotFoo (bar.dart:10:20)
364 #4 fooTop (dart:io/socket.dart:5:10) 361 #4 fooTop (dart:io/socket.dart:5:10)
365 #5 fooBottom (dart:async-patch/future.dart:9:11) 362 #5 fooBottom (dart:async-patch/future.dart:9:11)
366 '''); 363 ''');
367 364
368 var folded = trace.foldFrames((frame) => frame.member.startsWith('foo')); 365 var folded =
369 expect(folded.toString(), equals(''' 366 trace.foldFrames((frame) => frame.member.startsWith('foo'));
367 expect(folded.toString(), equals('''
370 foo.dart 42:21 notFoo 368 foo.dart 42:21 notFoo
371 foo.dart 1:100 fooBottom 369 foo.dart 1:100 fooBottom
372 bar.dart 10:20 alsoNotFoo 370 bar.dart 10:20 alsoNotFoo
373 dart:async-patch/future.dart 9:11 fooBottom 371 dart:async-patch/future.dart 9:11 fooBottom
374 ''')); 372 '''));
375 }); 373 });
376 374
377 test('.foldFrames with terse: true folds core frames as well', () { 375 test('will never fold unparsed frames', () {
378 var trace = new Trace.parse(''' 376 var trace = new Trace.parse(r'''
377 .g"cs$#:b";a#>sw{*{ul$"$xqwr`p
378 %+j-?uppx<([j@#nu{{>*+$%x-={`{
379 !e($b{nj)zs?cgr%!;bmw.+$j+pfj~
380 ''');
381
382 expect(trace.foldFrames((frame) => true).toString(), equals(r'''
383 .g"cs$#:b";a#>sw{*{ul$"$xqwr`p
384 %+j-?uppx<([j@#nu{{>*+$%x-={`{
385 !e($b{nj)zs?cgr%!;bmw.+$j+pfj~
386 '''));
387 });
388
389 group("with terse: true", () {
390 test('folds core frames as well', () {
391 var trace = new Trace.parse('''
379 #0 notFoo (foo.dart:42:21) 392 #0 notFoo (foo.dart:42:21)
380 #1 fooTop (bar.dart:0:2) 393 #1 fooTop (bar.dart:0:2)
381 #2 coreBottom (dart:async/future.dart:0:2) 394 #2 coreBottom (dart:async/future.dart:0:2)
382 #3 alsoNotFoo (bar.dart:10:20) 395 #3 alsoNotFoo (bar.dart:10:20)
383 #4 fooTop (foo.dart:9:11) 396 #4 fooTop (foo.dart:9:11)
384 #5 coreBottom (dart:async-patch/future.dart:9:11) 397 #5 coreBottom (dart:async-patch/future.dart:9:11)
385 '''); 398 ''');
386 399
387 var folded = trace.foldFrames((frame) => frame.member.startsWith('foo'), 400 var folded = trace.foldFrames(
388 terse: true); 401 (frame) => frame.member.startsWith('foo'),
389 expect(folded.toString(), equals(''' 402 terse: true);
403 expect(folded.toString(), equals('''
390 foo.dart 42:21 notFoo 404 foo.dart 42:21 notFoo
391 dart:async coreBottom 405 dart:async coreBottom
392 bar.dart 10:20 alsoNotFoo 406 bar.dart 10:20 alsoNotFoo
393 ''')); 407 '''));
394 }); 408 });
395 409
396 test('.foldFrames with terse: true shortens folded frames', () { 410 test('shortens folded frames', () {
397 var trace = new Trace.parse(''' 411 var trace = new Trace.parse('''
398 #0 notFoo (foo.dart:42:21) 412 #0 notFoo (foo.dart:42:21)
399 #1 fooTop (bar.dart:0:2) 413 #1 fooTop (bar.dart:0:2)
400 #2 fooBottom (package:foo/bar.dart:0:2) 414 #2 fooBottom (package:foo/bar.dart:0:2)
401 #3 alsoNotFoo (bar.dart:10:20) 415 #3 alsoNotFoo (bar.dart:10:20)
402 #4 fooTop (foo.dart:9:11) 416 #4 fooTop (foo.dart:9:11)
403 #5 fooBottom (foo/bar.dart:9:11) 417 #5 fooBottom (foo/bar.dart:9:11)
418 #6 againNotFoo (bar.dart:20:20)
404 '''); 419 ''');
405 420
406 var folded = trace.foldFrames((frame) => frame.member.startsWith('foo'), 421 var folded = trace.foldFrames(
407 terse: true); 422 (frame) => frame.member.startsWith('foo'),
408 expect(folded.toString(), equals(''' 423 terse: true);
424 expect(folded.toString(), equals('''
409 foo.dart 42:21 notFoo 425 foo.dart 42:21 notFoo
410 package:foo fooBottom 426 package:foo fooBottom
411 bar.dart 10:20 alsoNotFoo 427 bar.dart 10:20 alsoNotFoo
412 foo fooBottom 428 foo fooBottom
429 bar.dart 20:20 againNotFoo
413 ''')); 430 '''));
414 }); 431 });
415 432
416 test('.foldFrames will never fold unparsed frames', () { 433 test('removes the bottom-most folded frame', () {
417 var trace = new Trace.parse(r''' 434 var trace = new Trace.parse('''
418 .g"cs$#:b";a#>sw{*{ul$"$xqwr`p 435 #2 fooTop (package:foo/bar.dart:0:2)
419 %+j-?uppx<([j@#nu{{>*+$%x-={`{ 436 #3 notFoo (bar.dart:10:20)
420 !e($b{nj)zs?cgr%!;bmw.+$j+pfj~ 437 #5 fooBottom (foo/bar.dart:9:11)
421 '''); 438 ''');
422 439
423 expect(trace.foldFrames((frame) => true).toString(), equals(r''' 440 var folded = trace.foldFrames(
424 .g"cs$#:b";a#>sw{*{ul$"$xqwr`p 441 (frame) => frame.member.startsWith('foo'),
425 %+j-?uppx<([j@#nu{{>*+$%x-={`{ 442 terse: true);
426 !e($b{nj)zs?cgr%!;bmw.+$j+pfj~ 443 expect(folded.toString(), equals('''
444 package:foo fooTop
445 bar.dart 10:20 notFoo
427 ''')); 446 '''));
447 });
448 });
428 }); 449 });
429 }); 450 });
430 } 451 }
OLDNEW
« no previous file with comments | « packages/stack_trace/test/frame_test.dart ('k') | packages/stack_trace/test/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698