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

Side by Side Diff: pkg/analyzer/test/generated/source_factory_test.dart

Issue 1206323005: Package map source factory support. (Closed) Base URL: git@github.com:dart-lang/sdk.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
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 // This code was auto-generated, is not intended to be edited, and is subject to 5 // This code was auto-generated, is not intended to be edited, and is subject to
6 // significant change. Please see the README file for more information. 6 // significant change. Please see the README file for more information.
7 7
8 library analyzer.test.generated.source_factory; 8 library analyzer.test.generated.source_factory;
9 9
10 import 'dart:convert';
11
10 import 'package:analyzer/file_system/file_system.dart'; 12 import 'package:analyzer/file_system/file_system.dart';
11 import 'package:analyzer/file_system/memory_file_system.dart'; 13 import 'package:analyzer/file_system/memory_file_system.dart';
12 import 'package:analyzer/source/package_map_resolver.dart'; 14 import 'package:analyzer/source/package_map_resolver.dart';
13 import 'package:analyzer/src/generated/java_core.dart'; 15 import 'package:analyzer/src/generated/java_core.dart';
14 import 'package:analyzer/src/generated/java_engine_io.dart'; 16 import 'package:analyzer/src/generated/java_engine_io.dart';
15 import 'package:analyzer/src/generated/java_io.dart'; 17 import 'package:analyzer/src/generated/java_io.dart';
16 import 'package:analyzer/src/generated/source.dart'; 18 import 'package:analyzer/src/generated/source.dart';
17 import 'package:analyzer/src/generated/source_io.dart'; 19 import 'package:analyzer/src/generated/source_io.dart';
20 import 'package:package_config/packages.dart';
21 import 'package:package_config/packages_file.dart' as pkgfile show parse;
22 import 'package:package_config/src/packages_impl.dart';
18 import 'package:path/path.dart'; 23 import 'package:path/path.dart';
19 import 'package:unittest/unittest.dart'; 24 import 'package:unittest/unittest.dart';
20 25
21 import '../reflective_tests.dart'; 26 import '../reflective_tests.dart';
22 import 'test_support.dart'; 27 import 'test_support.dart';
23 28
24 main() { 29 main() {
25 groupSep = ' | '; 30 groupSep = ' | ';
26 runReflectiveTests(SourceFactoryTest); 31 runReflectiveTests(SourceFactoryTest);
32 runPackageMapTests();
33 }
34
35 class CustomUriResolver extends UriResolver {
36 static final Source sharedSource =
37 new NonExistingSource(null, sharedUri, null);
38 static final Uri sharedUri = new Uri();
39
40 @override
41 Source resolveAbsolute(Uri uri) => sharedSource;
42 }
43
44 void runPackageMapTests() {
45 final Uri baseUri = new Uri.file('test/base');
46 final List<UriResolver> testResolvers = [new FileUriResolver()];
47
48 Packages createPackageMap(Uri base, String configFileContents) {
49 List<int> bytes = UTF8.encode(configFileContents);
50 Map<String, Uri> map = pkgfile.parse(bytes, base);
51 return new MapPackages(map);
52 }
53
54 Map<String, List<Folder>> getPackageMap(String config) {
55 Packages packages = createPackageMap(baseUri, config);
56 SourceFactory factory = new SourceFactory(testResolvers, packages);
57 return factory.packageMap;
58 }
59
60 Uri resolvePackageUri(
61 {String uri, String config, UriResolver customResolver}) {
62 Packages packages = createPackageMap(baseUri, config);
63 List<UriResolver> resolvers = testResolvers.toList();
64 if (customResolver != null) {
65 resolvers.add(customResolver);
66 }
67 SourceFactory factory = new SourceFactory(resolvers, packages);
68 Source source = factory.resolveUri(null, uri);
69 return source == null ? null : source.uri;
70 }
71
72 Uri restorePackageUri(
73 {Source source, String config, UriResolver customResolver}) {
74 Packages packages = createPackageMap(baseUri, config);
75 List<UriResolver> resolvers = testResolvers.toList();
76 if (customResolver != null) {
77 resolvers.add(customResolver);
78 }
79 SourceFactory factory = new SourceFactory(resolvers, packages);
80 return factory.restoreUri(source);
81 }
82
83 group('SourceFactoryTest', () {
84 group('package mapping', () {
85 group('resolveUri', () {
86 test('URI in mapping', () {
87 Uri uri = resolvePackageUri(config: '''
88 unittest:/home/somebody/.pub/cache/unittest-0.9.9/lib/
89 async:/home/somebody/.pub/cache/async-1.1.0/lib/
90 quiver:/home/somebody/.pub/cache/quiver-1.2.1/lib
91 ''', uri: 'package:unittest/unittest.dart');
92 expect(uri.toString(), equals(
93 'file:///home/somebody/.pub/cache/unittest-0.9.9/lib/unittest.dart '));
94 });
95 test('URI not in mapping', () {
96 Uri uri = resolvePackageUri(
97 config: 'unittest:/home/somebody/.pub/cache/unittest-0.9.9/lib/',
98 uri: 'package:foo/foo.dart');
99 expect(uri, isNull);
100 });
101 test('Non-package URI', () {
102 Uri uri = resolvePackageUri(
103 config: 'unittest:/home/somebody/.pub/cache/unittest-0.9.9/lib/',
104 uri: 'custom:custom.dart',
105 customResolver: new CustomUriResolver());
106 expect(uri, CustomUriResolver.sharedUri);
107 });
108 test('Invalid URI', () {
109 // TODO(pquitslund): fix clients to handle errors appropriately
110 // CLI: print message 'invalid package file format'
111 // SERVER: best case tell user somehow and recover...
112 expect(() => resolvePackageUri(
113 config: 'foo:<:&%>', uri: 'package:foo/bar.dart'),
114 throwsA(new isInstanceOf('FormatException')));
115 });
116 test('Valid URI that cannot be further resolved', () {
117 Uri uri = resolvePackageUri(
118 config: 'foo:http://www.google.com', uri: 'package:foo/bar.dart');
119 expect(uri, isNull);
120 });
121 });
122 group('restoreUri', () {
123 test('URI in mapping', () {
124 Uri uri = restorePackageUri(config: '''
125 unittest:/home/somebody/.pub/cache/unittest-0.9.9/lib/
126 async:/home/somebody/.pub/cache/async-1.1.0/lib/
127 quiver:/home/somebody/.pub/cache/quiver-1.2.1/lib
128 ''',
129 source: new FileBasedSource(new JavaFile(
130 '/home/somebody/.pub/cache/unittest-0.9.9/lib/unittest.dart')) );
131 expect(uri.toString(), equals('package:unittest/unittest.dart'));
132 });
133 });
134 group('packageMap', () {
135 test('non-file URIs filtered', () {
136 Map<String, List<Folder>> map = getPackageMap('''
137 quiver:/home/somebody/.pub/cache/quiver-1.2.1/lib
138 foo:http://www.google.com
139 ''');
140 expect(map.keys, unorderedEquals(['quiver']));
141 });
142 });
143 });
144 });
27 } 145 }
28 146
29 @reflectiveTest 147 @reflectiveTest
30 class SourceFactoryTest { 148 class SourceFactoryTest {
31 void test_creation() { 149 void test_creation() {
32 expect(new SourceFactory([]), isNotNull); 150 expect(new SourceFactory([]), isNotNull);
33 } 151 }
34 152
35 void test_fromEncoding_invalidUri() { 153 void test_fromEncoding_invalidUri() {
36 SourceFactory factory = new SourceFactory([]); 154 SourceFactory factory = new SourceFactory([]);
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 UriResolver_SourceFactoryTest_test_fromEncoding_valid(this.encoding); 287 UriResolver_SourceFactoryTest_test_fromEncoding_valid(this.encoding);
170 288
171 @override 289 @override
172 Source resolveAbsolute(Uri uri) { 290 Source resolveAbsolute(Uri uri) {
173 if (uri.toString() == encoding) { 291 if (uri.toString() == encoding) {
174 return new TestSource(); 292 return new TestSource();
175 } 293 }
176 return null; 294 return null;
177 } 295 }
178 } 296 }
OLDNEW
« pkg/analyzer/lib/src/generated/source.dart ('K') | « pkg/analyzer/pubspec.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698