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

Unified Diff: packages/source_maps/test/parser_test.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « packages/source_maps/test/end2end_test.dart ('k') | packages/source_maps/test/printer_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: packages/source_maps/test/parser_test.dart
diff --git a/packages/source_maps/test/parser_test.dart b/packages/source_maps/test/parser_test.dart
index b14fdf4253f059c8d5df447fed2f4d0cfd7fbc6c..2c24d1b6fd0a23d8c1fc581cbb86ce10d8ad692d 100644
--- a/packages/source_maps/test/parser_test.dart
+++ b/packages/source_maps/test/parser_test.dart
@@ -5,37 +5,71 @@
library test.parser_test;
import 'dart:convert';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
import 'package:source_maps/source_maps.dart';
+import 'package:source_span/source_span.dart';
import 'common.dart';
const Map<String, dynamic> MAP_WITH_NO_SOURCE_LOCATION = const {
- 'version': 3,
- 'sourceRoot': '',
- 'sources': const ['input.dart'],
- 'names': const [],
- 'mappings': 'A',
- 'file': 'output.dart'
+ 'version': 3,
+ 'sourceRoot': '',
+ 'sources': const ['input.dart'],
+ 'names': const [],
+ 'mappings': 'A',
+ 'file': 'output.dart'
};
const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION = const {
- 'version': 3,
- 'sourceRoot': '',
- 'sources': const ['input.dart'],
- 'names': const [],
- 'mappings': 'AAAA',
- 'file': 'output.dart'
+ 'version': 3,
+ 'sourceRoot': '',
+ 'sources': const ['input.dart'],
+ 'names': const [],
+ 'mappings': 'AAAA',
+ 'file': 'output.dart'
};
const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION_AND_NAME = const {
- 'version': 3,
- 'sourceRoot': '',
- 'sources': const ['input.dart'],
- 'names': const ['var'],
- 'mappings': 'AAAAA',
- 'file': 'output.dart'
+ 'version': 3,
+ 'sourceRoot': '',
+ 'sources': const ['input.dart'],
+ 'names': const ['var'],
+ 'mappings': 'AAAAA',
+ 'file': 'output.dart'
};
+const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION_AND_NAME_1 = const {
+ 'version': 3,
+ 'sourceRoot': 'pkg/',
+ 'sources': const ['input1.dart'],
+ 'names': const ['var1'],
+ 'mappings': 'AAAAA',
+ 'file': 'output.dart'
+};
+
+const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION_AND_NAME_2 = const {
+ 'version': 3,
+ 'sourceRoot': 'pkg/',
+ 'sources': const ['input2.dart'],
+ 'names': const ['var2'],
+ 'mappings': 'AAAAA',
+ 'file': 'output2.dart'
+};
+
+const Map<String, dynamic> MAP_WITH_SOURCE_LOCATION_AND_NAME_3 = const {
+ 'version': 3,
+ 'sourceRoot': 'pkg/',
+ 'sources': const ['input3.dart'],
+ 'names': const ['var3'],
+ 'mappings': 'AAAAA',
+ 'file': '3/output.dart'
+};
+
+const List SOURCE_MAP_BUNDLE = const [
+ MAP_WITH_SOURCE_LOCATION_AND_NAME_1,
+ MAP_WITH_SOURCE_LOCATION_AND_NAME_2,
+ MAP_WITH_SOURCE_LOCATION_AND_NAME_3,
+];
+
main() {
test('parse', () {
var mapping = parseJson(EXPECTED_MAP);
@@ -105,6 +139,12 @@ main() {
inputMap['sourceRoot'] = '/pkg/';
var mapping = parseJson(inputMap);
expect(mapping.spanFor(0, 0).sourceUrl, Uri.parse("/pkg/input.dart"));
+ expect(
+ mapping
+ .spanForLocation(
+ new SourceLocation(0, sourceUrl: Uri.parse("ignored.dart")))
+ .sourceUrl,
+ Uri.parse("/pkg/input.dart"));
var newSourceRoot = '/new/';
@@ -122,14 +162,183 @@ main() {
Uri.parse("file:///path/to/pkg/input.dart"));
});
+ group('parse with bundle', () {
+ var mapping =
+ parseJsonExtended(SOURCE_MAP_BUNDLE, mapUrl: "file:///path/to/map");
+
+ test('simple', () {
+ expect(
+ mapping
+ .spanForLocation(new SourceLocation(0,
+ sourceUrl: new Uri.file('/path/to/output.dart')))
+ .sourceUrl,
+ Uri.parse("file:///path/to/pkg/input1.dart"));
+ expect(
+ mapping
+ .spanForLocation(new SourceLocation(0,
+ sourceUrl: new Uri.file('/path/to/output2.dart')))
+ .sourceUrl,
+ Uri.parse("file:///path/to/pkg/input2.dart"));
+ expect(
+ mapping
+ .spanForLocation(new SourceLocation(0,
+ sourceUrl: new Uri.file('/path/to/3/output.dart')))
+ .sourceUrl,
+ Uri.parse("file:///path/to/pkg/input3.dart"));
+
+ expect(
+ mapping.spanFor(0, 0, uri: "file:///path/to/output.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input1.dart"));
+ expect(
+ mapping.spanFor(0, 0, uri: "file:///path/to/output2.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input2.dart"));
+ expect(
+ mapping.spanFor(0, 0, uri: "file:///path/to/3/output.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input3.dart"));
+ });
+
+ test('package uris', () {
+ expect(
+ mapping
+ .spanForLocation(new SourceLocation(0,
+ sourceUrl: Uri.parse('package:1/output.dart')))
+ .sourceUrl,
+ Uri.parse("file:///path/to/pkg/input1.dart"));
+ expect(
+ mapping
+ .spanForLocation(new SourceLocation(0,
+ sourceUrl: Uri.parse('package:2/output2.dart')))
+ .sourceUrl,
+ Uri.parse("file:///path/to/pkg/input2.dart"));
+ expect(
+ mapping
+ .spanForLocation(new SourceLocation(0,
+ sourceUrl: Uri.parse('package:3/output.dart')))
+ .sourceUrl,
+ Uri.parse("file:///path/to/pkg/input3.dart"));
+
+ expect(mapping.spanFor(0, 0, uri: "package:1/output.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input1.dart"));
+ expect(mapping.spanFor(0, 0, uri: "package:2/output2.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input2.dart"));
+ expect(mapping.spanFor(0, 0, uri: "package:3/output.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input3.dart"));
+ });
+
+ test('unmapped path', () {
+ var span = mapping.spanFor(0, 0, uri: "unmapped_output.dart");
+ expect(span.sourceUrl, Uri.parse("unmapped_output.dart"));
+ expect(span.start.line, equals(0));
+ expect(span.start.column, equals(0));
+
+ span = mapping.spanFor(10, 5, uri: "unmapped_output.dart");
+ expect(span.sourceUrl, Uri.parse("unmapped_output.dart"));
+ expect(span.start.line, equals(10));
+ expect(span.start.column, equals(5));
+ });
+
+ test('missing path', () {
+ expect(() => mapping.spanFor(0, 0), throws);
+ });
+
+ test('incomplete paths', () {
+ expect(mapping.spanFor(0, 0, uri: "output.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input1.dart"));
+ expect(mapping.spanFor(0, 0, uri: "output2.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input2.dart"));
+ expect(mapping.spanFor(0, 0, uri: "3/output.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input3.dart"));
+ });
+
+ test('parseExtended', () {
+ var mapping = parseExtended(JSON.encode(SOURCE_MAP_BUNDLE),
+ mapUrl: "file:///path/to/map");
+
+ expect(mapping.spanFor(0, 0, uri: "output.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input1.dart"));
+ expect(mapping.spanFor(0, 0, uri: "output2.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input2.dart"));
+ expect(mapping.spanFor(0, 0, uri: "3/output.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input3.dart"));
+ });
+
+ test('build bundle incrementally', () {
+ var mapping = new MappingBundle();
+
+ mapping.addMapping(parseJson(MAP_WITH_SOURCE_LOCATION_AND_NAME_1,
+ mapUrl: "file:///path/to/map"));
+ expect(mapping.spanFor(0, 0, uri: "output.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input1.dart"));
+
+ expect(mapping.containsMapping("output2.dart"), isFalse);
+ mapping.addMapping(parseJson(MAP_WITH_SOURCE_LOCATION_AND_NAME_2,
+ mapUrl: "file:///path/to/map"));
+ expect(mapping.containsMapping("output2.dart"), isTrue);
+ expect(mapping.spanFor(0, 0, uri: "output2.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input2.dart"));
+
+ expect(mapping.containsMapping("3/output.dart"), isFalse);
+ mapping.addMapping(parseJson(MAP_WITH_SOURCE_LOCATION_AND_NAME_3,
+ mapUrl: "file:///path/to/map"));
+ expect(mapping.containsMapping("3/output.dart"), isTrue);
+ expect(mapping.spanFor(0, 0, uri: "3/output.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input3.dart"));
+ });
+
+ // Test that the source map can handle cases where the uri passed in is
+ // not from the expected host but it is still unambiguous which source
+ // map should be used.
+ test('different paths', () {
+ expect(
+ mapping
+ .spanForLocation(new SourceLocation(0,
+ sourceUrl: Uri.parse('http://localhost/output.dart')))
+ .sourceUrl,
+ Uri.parse("file:///path/to/pkg/input1.dart"));
+ expect(
+ mapping
+ .spanForLocation(new SourceLocation(0,
+ sourceUrl: Uri.parse('http://localhost/output2.dart')))
+ .sourceUrl,
+ Uri.parse("file:///path/to/pkg/input2.dart"));
+ expect(
+ mapping
+ .spanForLocation(new SourceLocation(0,
+ sourceUrl: Uri.parse('http://localhost/3/output.dart')))
+ .sourceUrl,
+ Uri.parse("file:///path/to/pkg/input3.dart"));
+
+ expect(
+ mapping.spanFor(0, 0, uri: "http://localhost/output.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input1.dart"));
+ expect(
+ mapping.spanFor(0, 0, uri: "http://localhost/output2.dart").sourceUrl,
+ Uri.parse("file:///path/to/pkg/input2.dart"));
+ expect(
+ mapping
+ .spanFor(0, 0, uri: "http://localhost/3/output.dart")
+ .sourceUrl,
+ Uri.parse("file:///path/to/pkg/input3.dart"));
+ });
+ });
+
test('parse and re-emit', () {
for (var expected in [
- EXPECTED_MAP,
- MAP_WITH_NO_SOURCE_LOCATION,
- MAP_WITH_SOURCE_LOCATION,
- MAP_WITH_SOURCE_LOCATION_AND_NAME]) {
+ EXPECTED_MAP,
+ MAP_WITH_NO_SOURCE_LOCATION,
+ MAP_WITH_SOURCE_LOCATION,
+ MAP_WITH_SOURCE_LOCATION_AND_NAME
+ ]) {
var mapping = parseJson(expected);
expect(mapping.toJson(), equals(expected));
+
+ mapping = parseJsonExtended(expected);
+ expect(mapping.toJson(), equals(expected));
}
+ // Invalid for this case
+ expect(() => parseJson(SOURCE_MAP_BUNDLE as dynamic), throws);
+
+ var mapping = parseJsonExtended(SOURCE_MAP_BUNDLE);
+ expect(mapping.toJson(), equals(SOURCE_MAP_BUNDLE));
});
}
« no previous file with comments | « packages/source_maps/test/end2end_test.dart ('k') | packages/source_maps/test/printer_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698