| 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 'package:package_resolver/package_resolver.dart'; |
| 5 import 'package:source_maps/source_maps.dart'; | 6 import 'package:source_maps/source_maps.dart'; |
| 6 import 'package:source_span/source_span.dart'; | 7 import 'package:source_span/source_span.dart'; |
| 7 import 'package:stack_trace/stack_trace.dart'; | 8 import 'package:stack_trace/stack_trace.dart'; |
| 8 import 'package:source_map_stack_trace/source_map_stack_trace.dart'; | 9 import 'package:source_map_stack_trace/source_map_stack_trace.dart'; |
| 9 import 'package:test/test.dart'; | 10 import 'package:test/test.dart'; |
| 10 | 11 |
| 11 /// A simple [Mapping] for tests that don't need anything special. | 12 /// A simple [Mapping] for tests that don't need anything special. |
| 12 final _simpleMapping = parseJson( | 13 final _simpleMapping = parseJson( |
| 13 (new SourceMapBuilder() | 14 (new SourceMapBuilder() |
| 14 ..addSpan( | 15 ..addSpan( |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 "\n" * 4)); | 96 "\n" * 4)); |
| 96 | 97 |
| 97 var mapping = parseJson(builder.build("foo.dart.js.map")); | 98 var mapping = parseJson(builder.build("foo.dart.js.map")); |
| 98 var frame = _mapTrace(mapping, trace, packageRoot: "packages/") | 99 var frame = _mapTrace(mapping, trace, packageRoot: "packages/") |
| 99 .frames.first; | 100 .frames.first; |
| 100 expect(frame.uri, equals(Uri.parse("package:foo/foo.dart"))); | 101 expect(frame.uri, equals(Uri.parse("package:foo/foo.dart"))); |
| 101 expect(frame.line, equals(2)); | 102 expect(frame.line, equals(2)); |
| 102 expect(frame.column, equals(4)); | 103 expect(frame.column, equals(4)); |
| 103 }); | 104 }); |
| 104 | 105 |
| 106 test("uses package: URIs for frames within packageResolver.packageRoot", () { |
| 107 var trace = new Trace.parse("foo.dart.js 10 foo"); |
| 108 var builder = new SourceMapBuilder() |
| 109 ..addSpan( |
| 110 new SourceMapSpan.identifier( |
| 111 new SourceLocation(1, |
| 112 line: 1, column: 3, sourceUrl: "packages/foo/foo.dart"), |
| 113 "qux"), |
| 114 new SourceSpan( |
| 115 new SourceLocation(8, line: 5, column: 0), |
| 116 new SourceLocation(12, line: 9, column: 1), |
| 117 "\n" * 4)); |
| 118 |
| 119 var mapping = parseJson(builder.build("foo.dart.js.map")); |
| 120 var mappedTrace = _mapTrace(mapping, trace, |
| 121 packageResolver: new SyncPackageResolver.root("packages/")); |
| 122 var frame = mappedTrace.frames.first; |
| 123 expect(frame.uri, equals(Uri.parse("package:foo/foo.dart"))); |
| 124 expect(frame.line, equals(2)); |
| 125 expect(frame.column, equals(4)); |
| 126 }); |
| 127 |
| 128 test("uses package: URIs for frames within a packageResolver.packageMap URL", |
| 129 () { |
| 130 var trace = new Trace.parse("foo.dart.js 10 foo"); |
| 131 var builder = new SourceMapBuilder() |
| 132 ..addSpan( |
| 133 new SourceMapSpan.identifier( |
| 134 new SourceLocation(1, |
| 135 line: 1, column: 3, sourceUrl: "packages/foo/foo.dart"), |
| 136 "qux"), |
| 137 new SourceSpan( |
| 138 new SourceLocation(8, line: 5, column: 0), |
| 139 new SourceLocation(12, line: 9, column: 1), |
| 140 "\n" * 4)); |
| 141 |
| 142 var mapping = parseJson(builder.build("foo.dart.js.map")); |
| 143 var mappedTrace = _mapTrace(mapping, trace, |
| 144 packageResolver: new SyncPackageResolver.config({ |
| 145 "foo": Uri.parse("packages/foo") |
| 146 })); |
| 147 var frame = mappedTrace.frames.first; |
| 148 expect(frame.uri, equals(Uri.parse("package:foo/foo.dart"))); |
| 149 expect(frame.line, equals(2)); |
| 150 expect(frame.column, equals(4)); |
| 151 }); |
| 152 |
| 105 test("uses dart: URIs for frames within sdkRoot", () { | 153 test("uses dart: URIs for frames within sdkRoot", () { |
| 106 var trace = new Trace.parse("foo.dart.js 10 foo"); | 154 var trace = new Trace.parse("foo.dart.js 10 foo"); |
| 107 var builder = new SourceMapBuilder() | 155 var builder = new SourceMapBuilder() |
| 108 ..addSpan( | 156 ..addSpan( |
| 109 new SourceMapSpan.identifier( | 157 new SourceMapSpan.identifier( |
| 110 new SourceLocation(1, | 158 new SourceLocation(1, |
| 111 line: 1, column: 3, sourceUrl: "sdk/lib/async/foo.dart"), | 159 line: 1, column: 3, sourceUrl: "sdk/lib/async/foo.dart"), |
| 112 "qux"), | 160 "qux"), |
| 113 new SourceSpan( | 161 new SourceSpan( |
| 114 new SourceLocation(8, line: 5, column: 0), | 162 new SourceLocation(8, line: 5, column: 0), |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 test("lots of stuff", () { | 239 test("lots of stuff", () { |
| 192 expect(_prettify(r"lib$Foo.static.lib$Foo_closure.call$0/<"), | 240 expect(_prettify(r"lib$Foo.static.lib$Foo_closure.call$0/<"), |
| 193 equals("Foo.<fn>")); | 241 equals("Foo.<fn>")); |
| 194 }); | 242 }); |
| 195 }); | 243 }); |
| 196 } | 244 } |
| 197 | 245 |
| 198 /// Like [mapStackTrace], but is guaranteed to return a [Trace] so it can be | 246 /// Like [mapStackTrace], but is guaranteed to return a [Trace] so it can be |
| 199 /// inspected. | 247 /// inspected. |
| 200 Trace _mapTrace(Mapping sourceMap, StackTrace stackTrace, | 248 Trace _mapTrace(Mapping sourceMap, StackTrace stackTrace, |
| 201 {bool minified: false, packageRoot, sdkRoot}) { | 249 {bool minified: false, SyncPackageResolver packageResolver, sdkRoot, |
| 250 packageRoot}) { |
| 202 return new Trace.from(mapStackTrace(sourceMap, stackTrace, | 251 return new Trace.from(mapStackTrace(sourceMap, stackTrace, |
| 203 minified: minified, packageRoot: packageRoot, sdkRoot: sdkRoot)); | 252 minified: minified, packageResolver: packageResolver, sdkRoot: sdkRoot, |
| 253 packageRoot: packageRoot)); |
| 204 } | 254 } |
| 205 | 255 |
| 206 /// Like [mapStackTrace], but is guaranteed to return a [Chain] so it can be | 256 /// Like [mapStackTrace], but is guaranteed to return a [Chain] so it can be |
| 207 /// inspected. | 257 /// inspected. |
| 208 Chain _mapChain(Mapping sourceMap, StackTrace stackTrace, | 258 Chain _mapChain(Mapping sourceMap, StackTrace stackTrace, |
| 209 {bool minified: false, packageRoot, sdkRoot}) { | 259 {bool minified: false, SyncPackageResolver packageResolver, sdkRoot, |
| 260 packageRoot}) { |
| 210 return new Chain.forTrace(mapStackTrace(sourceMap, stackTrace, | 261 return new Chain.forTrace(mapStackTrace(sourceMap, stackTrace, |
| 211 minified: minified, packageRoot: packageRoot, sdkRoot: sdkRoot)); | 262 minified: minified, packageResolver: packageResolver, sdkRoot: sdkRoot, |
| 263 packageRoot: packageRoot)); |
| 212 } | 264 } |
| 213 | 265 |
| 214 /// Runs the mapper's prettification logic on [member] and returns the result. | 266 /// Runs the mapper's prettification logic on [member] and returns the result. |
| 215 String _prettify(String member) { | 267 String _prettify(String member) { |
| 216 var trace = new Trace([new Frame(Uri.parse("foo.dart.js"), 10, 11, member)]); | 268 var trace = new Trace([new Frame(Uri.parse("foo.dart.js"), 10, 11, member)]); |
| 217 return _mapTrace(_simpleMapping, trace).frames.first.member; | 269 return _mapTrace(_simpleMapping, trace).frames.first.member; |
| 218 } | 270 } |
| OLD | NEW |