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

Side by Side Diff: test/parser_test.dart

Issue 2574593004: Rev package version as the extended source map format is a new feature. (Closed)
Patch Set: Rev package version as the extended source map format is a new feature. Created 4 years 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
« lib/parser.dart ('K') | « 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 test.parser_test; 5 library test.parser_test;
6 6
7 import 'dart:convert'; 7 import 'dart:convert';
8 import 'package:test/test.dart'; 8 import 'package:test/test.dart';
9 import 'package:source_maps/source_maps.dart'; 9 import 'package:source_maps/source_maps.dart';
10 import 'package:source_span/source_span.dart'; 10 import 'package:source_span/source_span.dart';
(...skipping 25 matching lines...) Expand all
36 'mappings': 'AAAAA', 36 'mappings': 'AAAAA',
37 'file': 'output.dart' 37 'file': 'output.dart'
38 }; 38 };
39 39
40 const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION_AND_NAME_1 = const { 40 const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION_AND_NAME_1 = const {
41 'version': 3, 41 'version': 3,
42 'sourceRoot': 'pkg/', 42 'sourceRoot': 'pkg/',
43 'sources': const ['input1.dart'], 43 'sources': const ['input1.dart'],
44 'names': const ['var1'], 44 'names': const ['var1'],
45 'mappings': 'AAAAA', 45 'mappings': 'AAAAA',
46 'file': 'output1.dart' 46 'file': 'output.dart'
47 }; 47 };
48 48
49 const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION_AND_NAME_2 = const { 49 const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION_AND_NAME_2 = const {
50 'version': 3, 50 'version': 3,
51 'sourceRoot': 'pkg/', 51 'sourceRoot': 'pkg/',
52 'sources': const ['input2.dart'], 52 'sources': const ['input2.dart'],
53 'names': const ['var2'], 53 'names': const ['var2'],
54 'mappings': 'AAAAA', 54 'mappings': 'AAAAA',
55 'file': 'output2.dart' 55 'file': 'output2.dart'
56 }; 56 };
57 57
58 const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION_AND_NAME_3 = const {
59 'version': 3,
60 'sourceRoot': 'pkg/',
61 'sources': const ['input3.dart'],
62 'names': const ['var3'],
63 'mappings': 'AAAAA',
64 'file': '3/output.dart'
65 };
66
67 const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION_AND_NAME_3_WINDOWS = const {
68 'version': 3,
69 'sourceRoot': 'pkg/',
70 'sources': const ['input3.dart'],
71 'names': const ['var3'],
72 'mappings': 'AAAAA',
73 'file': '3\\output.dart'
74 };
75
58 const List SOURCE_MAP_BUNDLE = const [ 76 const List SOURCE_MAP_BUNDLE = const [
59 MAP_WITH_SOURCE_LOCATION_AND_NAME_1, 77 MAP_WITH_SOURCE_LOCATION_AND_NAME_1,
60 MAP_WITH_SOURCE_LOCATION_AND_NAME_2 78 MAP_WITH_SOURCE_LOCATION_AND_NAME_2,
79 MAP_WITH_SOURCE_LOCATION_AND_NAME_3,
80 ];
81
82 const List SOURCE_MAP_BUNDLE_WINDOWS = const [
83 MAP_WITH_SOURCE_LOCATION_AND_NAME_1,
84 MAP_WITH_SOURCE_LOCATION_AND_NAME_2,
85 MAP_WITH_SOURCE_LOCATION_AND_NAME_3_WINDOWS,
61 ]; 86 ];
62 87
63 main() { 88 main() {
64 test('parse', () { 89 test('parse', () {
65 var mapping = parseJson(EXPECTED_MAP); 90 var mapping = parseJson(EXPECTED_MAP);
66 check(outputVar1, mapping, inputVar1, false); 91 check(outputVar1, mapping, inputVar1, false);
67 check(outputVar2, mapping, inputVar2, false); 92 check(outputVar2, mapping, inputVar2, false);
68 check(outputFunction, mapping, inputFunction, false); 93 check(outputFunction, mapping, inputFunction, false);
69 check(outputExpr, mapping, inputExpr, false); 94 check(outputExpr, mapping, inputExpr, false);
70 }); 95 });
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 var inputMap = new Map.from(MAP_WITH_SOURCE_LOCATION); 173 var inputMap = new Map.from(MAP_WITH_SOURCE_LOCATION);
149 inputMap['sourceRoot'] = 'pkg/'; 174 inputMap['sourceRoot'] = 'pkg/';
150 var mapping = parseJson(inputMap, mapUrl: "file:///path/to/map"); 175 var mapping = parseJson(inputMap, mapUrl: "file:///path/to/map");
151 expect(mapping.spanFor(0, 0).sourceUrl, 176 expect(mapping.spanFor(0, 0).sourceUrl,
152 Uri.parse("file:///path/to/pkg/input.dart")); 177 Uri.parse("file:///path/to/pkg/input.dart"));
153 }); 178 });
154 179
155 group('parse with bundle', () { 180 group('parse with bundle', () {
156 var mapping = 181 var mapping =
157 parseJsonExtended(SOURCE_MAP_BUNDLE, mapUrl: "file:///path/to/map"); 182 parseJsonExtended(SOURCE_MAP_BUNDLE, mapUrl: "file:///path/to/map");
183
184 var mappingWindows = parseJsonExtended(SOURCE_MAP_BUNDLE_WINDOWS,
185 mapUrl: "c:\\path\\to\\map");
186
158 test('simple', () { 187 test('simple', () {
159 expect( 188 expect(
160 mapping 189 mapping
161 .spanForLocation(new SourceLocation(0, 190 .spanForLocation(new SourceLocation(0,
162 sourceUrl: new Uri.file('/path/to/output1.dart'))) 191 sourceUrl: new Uri.file('/path/to/output.dart')))
163 .sourceUrl, 192 .sourceUrl,
164 Uri.parse("file:///path/to/pkg/input1.dart")); 193 Uri.parse("file:///path/to/pkg/input1.dart"));
165 expect( 194 expect(
166 mapping 195 mapping
167 .spanForLocation(new SourceLocation(0, 196 .spanForLocation(new SourceLocation(0,
168 sourceUrl: new Uri.file('/path/to/output2.dart'))) 197 sourceUrl: new Uri.file('/path/to/output2.dart')))
169 .sourceUrl, 198 .sourceUrl,
170 Uri.parse("file:///path/to/pkg/input2.dart")); 199 Uri.parse("file:///path/to/pkg/input2.dart"));
200 expect(
201 mapping
202 .spanForLocation(new SourceLocation(0,
203 sourceUrl: new Uri.file('/path/to/3/output.dart')))
204 .sourceUrl,
205 Uri.parse("file:///path/to/pkg/input3.dart"));
171 206
172 expect( 207 expect(
173 mapping.spanFor(0, 0, uri: "file:///path/to/output1.dart").sourceUrl, 208 mapping.spanFor(0, 0, uri: "file:///path/to/output.dart").sourceUrl,
174 Uri.parse("file:///path/to/pkg/input1.dart")); 209 Uri.parse("file:///path/to/pkg/input1.dart"));
175 expect( 210 expect(
176 mapping.spanFor(0, 0, uri: "file:///path/to/output2.dart").sourceUrl, 211 mapping.spanFor(0, 0, uri: "file:///path/to/output2.dart").sourceUrl,
177 Uri.parse("file:///path/to/pkg/input2.dart")); 212 Uri.parse("file:///path/to/pkg/input2.dart"));
213 expect(
214 mapping.spanFor(0, 0, uri: "file:///path/to/3/output.dart").sourceUrl,
215 Uri.parse("file:///path/to/pkg/input3.dart"));
216 });
217
218 test('package uris', () {
219 expect(
220 mapping
221 .spanForLocation(new SourceLocation(0,
222 sourceUrl: Uri.parse('package:1/output.dart')))
223 .sourceUrl,
224 Uri.parse("file:///path/to/pkg/input1.dart"));
225 expect(
226 mapping
227 .spanForLocation(new SourceLocation(0,
228 sourceUrl: Uri.parse('package:2/output2.dart')))
229 .sourceUrl,
230 Uri.parse("file:///path/to/pkg/input2.dart"));
231 expect(
232 mapping
233 .spanForLocation(new SourceLocation(0,
234 sourceUrl: Uri.parse('package:3/output.dart')))
235 .sourceUrl,
236 Uri.parse("file:///path/to/pkg/input3.dart"));
237
238 expect(mapping.spanFor(0, 0, uri: "package:1/output.dart").sourceUrl,
239 Uri.parse("file:///path/to/pkg/input1.dart"));
240 expect(mapping.spanFor(0, 0, uri: "package:2/output2.dart").sourceUrl,
241 Uri.parse("file:///path/to/pkg/input2.dart"));
242 expect(mapping.spanFor(0, 0, uri: "package:3/output.dart").sourceUrl,
243 Uri.parse("file:///path/to/pkg/input3.dart"));
244 });
245
246 test('windows paths', () {
247 expect(mapping.spanFor(0, 0, uri: "1\\output.dart").sourceUrl,
248 Uri.parse("file:///path/to/pkg/input1.dart"));
249 expect(mapping.spanFor(0, 0, uri: "packages\\2\\output2.dart").sourceUrl,
250 Uri.parse("file:///path/to/pkg/input2.dart"));
251 expect(mapping.spanFor(0, 0, uri: "packages\\3\\output.dart").sourceUrl,
252 Uri.parse("file:///path/to/pkg/input3.dart"));
253
254 expect(mappingWindows.spanFor(0, 0, uri: "1\\output.dart").sourceUrl,
255 Uri.parse("c:pkg/input1.dart"));
256 expect(
257 mappingWindows
258 .spanFor(0, 0, uri: "packages\\2\\output2.dart")
259 .sourceUrl,
260 Uri.parse("c:pkg/input2.dart"));
261 expect(
262 mappingWindows
263 .spanFor(0, 0, uri: "packages\\3\\output.dart")
264 .sourceUrl,
265 Uri.parse("c:pkg/input3.dart"));
266
267 expect(mappingWindows.spanFor(0, 0, uri: "1\\output.dart").sourceUrl,
268 Uri.parse("c:pkg/input1.dart"));
269 expect(
270 mappingWindows
271 .spanFor(0, 0, uri: "packages/2/output2.dart")
272 .sourceUrl,
273 Uri.parse("c:pkg/input2.dart"));
274 expect(
275 mappingWindows.spanFor(0, 0, uri: "packages/3/output.dart").sourceUrl,
276 Uri.parse("c:pkg/input3.dart"));
178 }); 277 });
179 278
180 test('unmapped path', () { 279 test('unmapped path', () {
181 var span = mapping.spanFor(0, 0, uri: "unmapped_output.dart"); 280 var span = mapping.spanFor(0, 0, uri: "unmapped_output.dart");
182 expect(span.sourceUrl, Uri.parse("unmapped_output.dart")); 281 expect(span.sourceUrl, Uri.parse("unmapped_output.dart"));
183 expect(span.start.line, equals(0)); 282 expect(span.start.line, equals(0));
184 expect(span.start.column, equals(0)); 283 expect(span.start.column, equals(0));
185 284
186 span = mapping.spanFor(10, 5, uri: "unmapped_output.dart"); 285 span = mapping.spanFor(10, 5, uri: "unmapped_output.dart");
187 expect(span.sourceUrl, Uri.parse("unmapped_output.dart")); 286 expect(span.sourceUrl, Uri.parse("unmapped_output.dart"));
188 expect(span.start.line, equals(10)); 287 expect(span.start.line, equals(10));
189 expect(span.start.column, equals(5)); 288 expect(span.start.column, equals(5));
190 }); 289 });
191 290
192 test('missing path', () { 291 test('missing path', () {
193 expect(() => mapping.spanFor(0, 0), throws); 292 expect(() => mapping.spanFor(0, 0), throws);
194 }); 293 });
195 294
196 test('incomplete paths', () { 295 test('incomplete paths', () {
197 expect(mapping.spanFor(0, 0, uri: "output1.dart").sourceUrl, 296 expect(mapping.spanFor(0, 0, uri: "output.dart").sourceUrl,
198 Uri.parse("file:///path/to/pkg/input1.dart")); 297 Uri.parse("file:///path/to/pkg/input1.dart"));
199 expect(mapping.spanFor(0, 0, uri: "output2.dart").sourceUrl, 298 expect(mapping.spanFor(0, 0, uri: "output2.dart").sourceUrl,
200 Uri.parse("file:///path/to/pkg/input2.dart")); 299 Uri.parse("file:///path/to/pkg/input2.dart"));
300 expect(mapping.spanFor(0, 0, uri: "3/output.dart").sourceUrl,
301 Uri.parse("file:///path/to/pkg/input3.dart"));
201 }); 302 });
202 303
203 test('parseExtended', () { 304 test('parseExtended', () {
204 var mapping = parseExtended(JSON.encode(SOURCE_MAP_BUNDLE), 305 var mapping = parseExtended(JSON.encode(SOURCE_MAP_BUNDLE),
205 mapUrl: "file:///path/to/map"); 306 mapUrl: "file:///path/to/map");
206 307
207 expect(mapping.spanFor(0, 0, uri: "output1.dart").sourceUrl, 308 expect(mapping.spanFor(0, 0, uri: "output.dart").sourceUrl,
208 Uri.parse("file:///path/to/pkg/input1.dart")); 309 Uri.parse("file:///path/to/pkg/input1.dart"));
209 expect(mapping.spanFor(0, 0, uri: "output2.dart").sourceUrl, 310 expect(mapping.spanFor(0, 0, uri: "output2.dart").sourceUrl,
210 Uri.parse("file:///path/to/pkg/input2.dart")); 311 Uri.parse("file:///path/to/pkg/input2.dart"));
312 expect(mapping.spanFor(0, 0, uri: "3/output.dart").sourceUrl,
313 Uri.parse("file:///path/to/pkg/input3.dart"));
211 }); 314 });
212 315
213 // Test that the source map can handle cases where the uri passed in is 316 // Test that the source map can handle cases where the uri passed in is
214 // not from the expected host but it is still unambiguous which source 317 // not from the expected host but it is still unambiguous which source
215 // map should be used. 318 // map should be used.
216 test('different paths', () { 319 test('different paths', () {
217 expect( 320 expect(
218 mapping 321 mapping
219 .spanForLocation(new SourceLocation(0, 322 .spanForLocation(new SourceLocation(0,
220 sourceUrl: Uri.parse('http://localhost/output1.dart'))) 323 sourceUrl: Uri.parse('http://localhost/output.dart')))
221 .sourceUrl, 324 .sourceUrl,
222 Uri.parse("file:///path/to/pkg/input1.dart")); 325 Uri.parse("file:///path/to/pkg/input1.dart"));
223 expect( 326 expect(
224 mapping 327 mapping
225 .spanForLocation(new SourceLocation(0, 328 .spanForLocation(new SourceLocation(0,
226 sourceUrl: Uri.parse('http://localhost/output2.dart'))) 329 sourceUrl: Uri.parse('http://localhost/output2.dart')))
227 .sourceUrl, 330 .sourceUrl,
228 Uri.parse("file:///path/to/pkg/input2.dart")); 331 Uri.parse("file:///path/to/pkg/input2.dart"));
332 expect(
333 mapping
334 .spanForLocation(new SourceLocation(0,
335 sourceUrl: Uri.parse('http://localhost/3/output.dart')))
336 .sourceUrl,
337 Uri.parse("file:///path/to/pkg/input3.dart"));
229 338
230 expect( 339 expect(
231 mapping.spanFor(0, 0, uri: "http://localhost/output1.dart").sourceUrl, 340 mapping.spanFor(0, 0, uri: "http://localhost/output.dart").sourceUrl,
232 Uri.parse("file:///path/to/pkg/input1.dart")); 341 Uri.parse("file:///path/to/pkg/input1.dart"));
233 expect( 342 expect(
234 mapping.spanFor(0, 0, uri: "http://localhost/output2.dart").sourceUrl, 343 mapping.spanFor(0, 0, uri: "http://localhost/output2.dart").sourceUrl,
235 Uri.parse("file:///path/to/pkg/input2.dart")); 344 Uri.parse("file:///path/to/pkg/input2.dart"));
345 expect(
346 mapping
347 .spanFor(0, 0, uri: "http://localhost/3/output.dart")
348 .sourceUrl,
349 Uri.parse("file:///path/to/pkg/input3.dart"));
236 }); 350 });
237 }); 351 });
238 352
239 test('parse and re-emit', () { 353 test('parse and re-emit', () {
240 for (var expected in [ 354 for (var expected in [
241 EXPECTED_MAP, 355 EXPECTED_MAP,
242 MAP_WITH_NO_SOURCE_LOCATION, 356 MAP_WITH_NO_SOURCE_LOCATION,
243 MAP_WITH_SOURCE_LOCATION, 357 MAP_WITH_SOURCE_LOCATION,
244 MAP_WITH_SOURCE_LOCATION_AND_NAME 358 MAP_WITH_SOURCE_LOCATION_AND_NAME
245 ]) { 359 ]) {
246 var mapping = parseJson(expected); 360 var mapping = parseJson(expected);
247 expect(mapping.toJson(), equals(expected)); 361 expect(mapping.toJson(), equals(expected));
248 362
249 mapping = parseJsonExtended(expected); 363 mapping = parseJsonExtended(expected);
250 expect(mapping.toJson(), equals(expected)); 364 expect(mapping.toJson(), equals(expected));
251 } 365 }
252 // Invalid for this case 366 // Invalid for this case
253 expect(() => parseJson(SOURCE_MAP_BUNDLE as dynamic), throws); 367 expect(() => parseJson(SOURCE_MAP_BUNDLE as dynamic), throws);
254 368
255 var mapping = parseJsonExtended(SOURCE_MAP_BUNDLE); 369 var mapping = parseJsonExtended(SOURCE_MAP_BUNDLE);
256 expect(mapping.toJson(), equals(SOURCE_MAP_BUNDLE)); 370 expect(mapping.toJson(), equals(SOURCE_MAP_BUNDLE));
257 }); 371 });
258 } 372 }
OLDNEW
« lib/parser.dart ('K') | « pubspec.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698