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

Side by Side Diff: test/source_map_stack_trace_test.dart

Issue 1241953007: Use the new test runner on the bots. (Closed) Base URL: git@github.com:dart-lang/source_map_stack_trace.git@master
Patch Set: Created 5 years, 5 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) 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 'package:source_maps/source_maps.dart'; 5 import 'package:source_maps/source_maps.dart';
6 import 'package:source_span/source_span.dart'; 6 import 'package:source_span/source_span.dart';
7 import 'package:stack_trace/stack_trace.dart'; 7 import 'package:stack_trace/stack_trace.dart';
8 import 'package:source_map_stack_trace/source_map_stack_trace.dart'; 8 import 'package:source_map_stack_trace/source_map_stack_trace.dart';
9 import 'package:test/test.dart'; 9 import 'package:test/test.dart';
10 10
11 /// A simple [Mapping] for tests that don't need anything special. 11 /// A simple [Mapping] for tests that don't need anything special.
12 final _simpleMapping = parseJson( 12 final _simpleMapping = parseJson(
13 (new SourceMapBuilder() 13 (new SourceMapBuilder()
14 ..addSpan( 14 ..addSpan(
15 new SourceMapSpan.identifier( 15 new SourceMapSpan.identifier(
16 new SourceLocation(1, 16 new SourceLocation(1,
17 line: 1, column: 3, sourceUrl: "foo.dart"), 17 line: 1, column: 3, sourceUrl: "foo.dart"),
18 "qux"), 18 "qux"),
19 new SourceSpan( 19 new SourceSpan(
20 new SourceLocation(8, line: 5, column: 0), 20 new SourceLocation(8, line: 5, column: 0),
21 new SourceLocation(18, line: 15, column: 0), 21 new SourceLocation(18, line: 15, column: 0),
22 "\n" * 10))) 22 "\n" * 10)))
23 .build("foo.dart.js.map")); 23 .build("foo.dart.js.map"));
24 24
25 void main() { 25 void main() {
26 test("maps a JS line and column to a Dart line and span", () { 26 test("maps a JS line and column to a Dart line and span", () {
27 var trace = new Trace.parse("foo.dart.js 10:11 foo"); 27 var trace = new Trace.parse("foo.dart.js 10:11 foo");
28 var frame = mapStackTrace(_simpleMapping, trace).frames.first; 28 var frame = _mapTrace(_simpleMapping, trace).frames.first;
29 expect(frame.uri, equals(Uri.parse("foo.dart"))); 29 expect(frame.uri, equals(Uri.parse("foo.dart")));
30 30
31 // These are +1 because stack_trace is 1-based whereas source_span is 31 // These are +1 because stack_trace is 1-based whereas source_span is
32 // 0-basd. 32 // 0-basd.
33 expect(frame.line, equals(2)); 33 expect(frame.line, equals(2));
34 expect(frame.column, equals(4)); 34 expect(frame.column, equals(4));
35 }); 35 });
36 36
37 test("ignores JS frames without line info", () { 37 test("ignores JS frames without line info", () {
38 var trace = new Trace.parse(""" 38 var trace = new Trace.parse("""
39 foo.dart.js 10:11 foo 39 foo.dart.js 10:11 foo
40 foo.dart.js bar 40 foo.dart.js bar
41 foo.dart.js 10:11 baz 41 foo.dart.js 10:11 baz
42 """); 42 """);
43 var frames = mapStackTrace(_simpleMapping, trace).frames; 43 var frames = _mapTrace(_simpleMapping, trace).frames;
44 44
45 expect(frames.length, equals(2)); 45 expect(frames.length, equals(2));
46 expect(frames.first.member, equals("foo")); 46 expect(frames.first.member, equals("foo"));
47 expect(frames.last.member, equals("baz")); 47 expect(frames.last.member, equals("baz"));
48 }); 48 });
49 49
50 test("ignores JS frames without corresponding spans", () { 50 test("ignores JS frames without corresponding spans", () {
51 var trace = new Trace.parse(""" 51 var trace = new Trace.parse("""
52 foo.dart.js 10:11 foo 52 foo.dart.js 10:11 foo
53 foo.dart.js 1:1 bar 53 foo.dart.js 1:1 bar
54 foo.dart.js 10:11 baz 54 foo.dart.js 10:11 baz
55 """); 55 """);
56 56
57 var frames = mapStackTrace(_simpleMapping, trace).frames; 57 var frames = _mapTrace(_simpleMapping, trace).frames;
58 58
59 expect(frames.length, equals(2)); 59 expect(frames.length, equals(2));
60 expect(frames.first.member, equals("foo")); 60 expect(frames.first.member, equals("foo"));
61 expect(frames.last.member, equals("baz")); 61 expect(frames.last.member, equals("baz"));
62 }); 62 });
63 63
64 test("falls back to column 0 for unlisted column", () { 64 test("falls back to column 0 for unlisted column", () {
65 var trace = new Trace.parse("foo.dart.js 10 foo"); 65 var trace = new Trace.parse("foo.dart.js 10 foo");
66 var builder = new SourceMapBuilder() 66 var builder = new SourceMapBuilder()
67 ..addSpan( 67 ..addSpan(
68 new SourceMapSpan.identifier( 68 new SourceMapSpan.identifier(
69 new SourceLocation(1, 69 new SourceLocation(1,
70 line: 1, column: 3, sourceUrl: "foo.dart"), 70 line: 1, column: 3, sourceUrl: "foo.dart"),
71 "qux"), 71 "qux"),
72 new SourceSpan( 72 new SourceSpan(
73 new SourceLocation(8, line: 5, column: 0), 73 new SourceLocation(8, line: 5, column: 0),
74 new SourceLocation(12, line: 9, column: 1), 74 new SourceLocation(12, line: 9, column: 1),
75 "\n" * 4)); 75 "\n" * 4));
76 76
77 var mapping = parseJson(builder.build("foo.dart.js.map")); 77 var mapping = parseJson(builder.build("foo.dart.js.map"));
78 var frame = mapStackTrace(mapping, trace).frames.first; 78 var frame = _mapTrace(mapping, trace).frames.first;
79 expect(frame.uri, equals(Uri.parse("foo.dart"))); 79 expect(frame.uri, equals(Uri.parse("foo.dart")));
80 expect(frame.line, equals(2)); 80 expect(frame.line, equals(2));
81 expect(frame.column, equals(4)); 81 expect(frame.column, equals(4));
82 }); 82 });
83 83
84 test("uses package: URIs for frames within packageRoot", () { 84 test("uses package: URIs for frames within packageRoot", () {
85 var trace = new Trace.parse("foo.dart.js 10 foo"); 85 var trace = new Trace.parse("foo.dart.js 10 foo");
86 var builder = new SourceMapBuilder() 86 var builder = new SourceMapBuilder()
87 ..addSpan( 87 ..addSpan(
88 new SourceMapSpan.identifier( 88 new SourceMapSpan.identifier(
89 new SourceLocation(1, 89 new SourceLocation(1,
90 line: 1, column: 3, sourceUrl: "packages/foo/foo.dart"), 90 line: 1, column: 3, sourceUrl: "packages/foo/foo.dart"),
91 "qux"), 91 "qux"),
92 new SourceSpan( 92 new SourceSpan(
93 new SourceLocation(8, line: 5, column: 0), 93 new SourceLocation(8, line: 5, column: 0),
94 new SourceLocation(12, line: 9, column: 1), 94 new SourceLocation(12, line: 9, column: 1),
95 "\n" * 4)); 95 "\n" * 4));
96 96
97 var mapping = parseJson(builder.build("foo.dart.js.map")); 97 var mapping = parseJson(builder.build("foo.dart.js.map"));
98 var frame = mapStackTrace(mapping, trace, packageRoot: "packages/") 98 var frame = _mapTrace(mapping, trace, packageRoot: "packages/")
99 .frames.first; 99 .frames.first;
100 expect(frame.uri, equals(Uri.parse("package:foo/foo.dart"))); 100 expect(frame.uri, equals(Uri.parse("package:foo/foo.dart")));
101 expect(frame.line, equals(2)); 101 expect(frame.line, equals(2));
102 expect(frame.column, equals(4)); 102 expect(frame.column, equals(4));
103 }); 103 });
104 104
105 test("uses dart: URIs for frames within sdkRoot", () { 105 test("uses dart: URIs for frames within sdkRoot", () {
106 var trace = new Trace.parse("foo.dart.js 10 foo"); 106 var trace = new Trace.parse("foo.dart.js 10 foo");
107 var builder = new SourceMapBuilder() 107 var builder = new SourceMapBuilder()
108 ..addSpan( 108 ..addSpan(
109 new SourceMapSpan.identifier( 109 new SourceMapSpan.identifier(
110 new SourceLocation(1, 110 new SourceLocation(1,
111 line: 1, column: 3, sourceUrl: "sdk/lib/async/foo.dart"), 111 line: 1, column: 3, sourceUrl: "sdk/lib/async/foo.dart"),
112 "qux"), 112 "qux"),
113 new SourceSpan( 113 new SourceSpan(
114 new SourceLocation(8, line: 5, column: 0), 114 new SourceLocation(8, line: 5, column: 0),
115 new SourceLocation(12, line: 9, column: 1), 115 new SourceLocation(12, line: 9, column: 1),
116 "\n" * 4)); 116 "\n" * 4));
117 117
118 var mapping = parseJson(builder.build("foo.dart.js.map")); 118 var mapping = parseJson(builder.build("foo.dart.js.map"));
119 var frame = mapStackTrace(mapping, trace, sdkRoot: "sdk/").frames.first; 119 var frame = _mapTrace(mapping, trace, sdkRoot: "sdk/").frames.first;
120 expect(frame.uri, equals(Uri.parse("dart:async/foo.dart"))); 120 expect(frame.uri, equals(Uri.parse("dart:async/foo.dart")));
121 expect(frame.line, equals(2)); 121 expect(frame.line, equals(2));
122 expect(frame.column, equals(4)); 122 expect(frame.column, equals(4));
123 }); 123 });
124 124
125 test("converts a stack chain", () { 125 test("converts a stack chain", () {
126 var trace = new Chain([ 126 var trace = new Chain([
127 new Trace.parse("foo.dart.js 10:11 foo"), 127 new Trace.parse("foo.dart.js 10:11 foo"),
128 new Trace.parse("foo.dart.js 10:11 bar") 128 new Trace.parse("foo.dart.js 10:11 bar")
129 ]); 129 ]);
130 var traces = mapStackTrace(_simpleMapping, trace).traces; 130 var traces = _mapChain(_simpleMapping, trace).traces;
131 131
132 var frame = traces.first.frames.single; 132 var frame = traces.first.frames.single;
133 expect(frame.uri, equals(Uri.parse("foo.dart"))); 133 expect(frame.uri, equals(Uri.parse("foo.dart")));
134 expect(frame.member, equals("foo")); 134 expect(frame.member, equals("foo"));
135 expect(frame.line, equals(2)); 135 expect(frame.line, equals(2));
136 expect(frame.column, equals(4)); 136 expect(frame.column, equals(4));
137 137
138 frame = traces.last.frames.single; 138 frame = traces.last.frames.single;
139 expect(frame.uri, equals(Uri.parse("foo.dart"))); 139 expect(frame.uri, equals(Uri.parse("foo.dart")));
140 expect(frame.member, equals("bar")); 140 expect(frame.member, equals("bar"));
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 expect(_prettify(r"Foo_bar__baz"), equals("Foo.bar._baz")); 183 expect(_prettify(r"Foo_bar__baz"), equals("Foo.bar._baz"));
184 }); 184 });
185 185
186 test("lots of stuff", () { 186 test("lots of stuff", () {
187 expect(_prettify(r"lib$Foo.static.lib$Foo_closure.call$0/<"), 187 expect(_prettify(r"lib$Foo.static.lib$Foo_closure.call$0/<"),
188 equals("Foo.<fn>")); 188 equals("Foo.<fn>"));
189 }); 189 });
190 }); 190 });
191 } 191 }
192 192
193 /// Like [mapStackTrace], but is guaranteed to return a [Trace] so it can be
194 /// inspected.
195 Trace _mapTrace(Mapping sourceMap, StackTrace stackTrace,
196 {bool minified: false, packageRoot, sdkRoot}) {
197 return new Trace.from(mapStackTrace(sourceMap, stackTrace,
198 minified: minified, packageRoot: packageRoot, sdkRoot: sdkRoot));
199 }
200
201 /// Like [mapStackTrace], but is guaranteed to return a [Chain] so it can be
202 /// inspected.
203 Chain _mapChain(Mapping sourceMap, StackTrace stackTrace,
204 {bool minified: false, packageRoot, sdkRoot}) {
205 return new Chain.forTrace(mapStackTrace(sourceMap, stackTrace,
206 minified: minified, packageRoot: packageRoot, sdkRoot: sdkRoot));
207 }
208
193 /// Runs the mapper's prettification logic on [member] and returns the result. 209 /// Runs the mapper's prettification logic on [member] and returns the result.
194 String _prettify(String member) { 210 String _prettify(String member) {
195 var trace = new Trace([new Frame(Uri.parse("foo.dart.js"), 10, 11, member)]); 211 var trace = new Trace([new Frame(Uri.parse("foo.dart.js"), 10, 11, member)]);
196 return mapStackTrace(_simpleMapping, trace).frames.first.member; 212 return _mapTrace(_simpleMapping, trace).frames.first.member;
197 } 213 }
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