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

Side by Side Diff: packages/analyzer/test/generated/package_test.dart

Issue 2990843002: Removed fixed dependencies (Closed)
Patch Set: Created 3 years, 4 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
(Empty)
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
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.
4
5 library analyzer.test.generated.package_test;
6
7 import 'package:analyzer/file_system/file_system.dart';
8 import 'package:analyzer/file_system/memory_file_system.dart';
9 import 'package:analyzer/src/generated/engine.dart';
10 import 'package:analyzer/src/generated/package.dart';
11 import 'package:analyzer/src/generated/sdk.dart';
12 import 'package:analyzer/src/generated/source.dart';
13 import 'package:package_config/packages.dart';
14 import 'package:test_reflective_loader/test_reflective_loader.dart';
15 import 'package:unittest/unittest.dart';
16
17 import '../src/context/mock_sdk.dart';
18 import '../utils.dart';
19 import 'resolver_test_case.dart';
20
21 main() {
22 initializeTestEnvironment();
23 defineReflectiveTests(DependencyFinderTest);
24 defineReflectiveTests(PackageDescriptionTest);
25 defineReflectiveTests(PackageManagerTest);
26 }
27
28 /**
29 * The name of the pubspec.yaml file.
30 */
31 const String pubspecName = 'pubspec.yaml';
32
33 @reflectiveTest
34 class DependencyFinderTest extends ResolverTestCase {
35 void test_transitiveDependenciesFor_circularDependencies() {
36 String packageA = '/pub-cache/a-1.0';
37 String packageB = '/pub-cache/b-1.0';
38 String packageC = '/pub-cache/c-1.0';
39 resourceProvider.newFile(
40 '$packageA/$pubspecName',
41 '''
42 dependencies:
43 b: any
44 ''');
45 resourceProvider.newFile(
46 '$packageB/$pubspecName',
47 '''
48 dependencies:
49 c: any
50 ''');
51 resourceProvider.newFile(
52 '$packageC/$pubspecName',
53 '''
54 dependencies:
55 a: any
56 ''');
57 Map<String, List<Folder>> packageMap = <String, List<Folder>>{
58 'a': <Folder>[resourceProvider.getFolder(packageA)],
59 'b': <Folder>[resourceProvider.getFolder(packageB)],
60 'c': <Folder>[resourceProvider.getFolder(packageC)],
61 };
62
63 DependencyFinder finder = new DependencyFinder(resourceProvider);
64 List<String> result =
65 finder.transitiveDependenciesFor(packageMap, packageA);
66 expect(result, unorderedEquals([packageB, packageC]));
67 }
68
69 void test_transitiveDependenciesFor_missingPubspec() {
70 String packagePath = '/pub-cache/a-1.0';
71 Map<String, List<Folder>> packageMap = <String, List<Folder>>{
72 'a': <Folder>[resourceProvider.getFolder(packagePath)]
73 };
74
75 DependencyFinder finder = new DependencyFinder(resourceProvider);
76 expect(() => finder.transitiveDependenciesFor(packageMap, packagePath),
77 throws);
78 }
79
80 void test_transitiveDependenciesFor_noDependencies() {
81 String packagePath = '/pub-cache/a-1.0';
82 resourceProvider.newFile('$packagePath/$pubspecName', '');
83 Map<String, List<Folder>> packageMap = <String, List<Folder>>{
84 'a': <Folder>[resourceProvider.getFolder(packagePath)]
85 };
86
87 DependencyFinder finder = new DependencyFinder(resourceProvider);
88 List<String> result =
89 finder.transitiveDependenciesFor(packageMap, packagePath);
90 expect(result, hasLength(0));
91 }
92
93 void test_transitiveDependenciesFor_overlappingDependencies() {
94 String packageA = '/pub-cache/a-1.0';
95 String packageB = '/pub-cache/b-1.0';
96 String packageC = '/pub-cache/c-1.0';
97 String packageD = '/pub-cache/d-1.0';
98 resourceProvider.newFile(
99 '$packageA/$pubspecName',
100 '''
101 dependencies:
102 b: any
103 c: any
104 ''');
105 resourceProvider.newFile(
106 '$packageB/$pubspecName',
107 '''
108 dependencies:
109 d: any
110 ''');
111 resourceProvider.newFile(
112 '$packageC/$pubspecName',
113 '''
114 dependencies:
115 d: any
116 ''');
117 resourceProvider.newFile('$packageD/$pubspecName', '');
118 Map<String, List<Folder>> packageMap = <String, List<Folder>>{
119 'a': <Folder>[resourceProvider.getFolder(packageA)],
120 'b': <Folder>[resourceProvider.getFolder(packageB)],
121 'c': <Folder>[resourceProvider.getFolder(packageC)],
122 'd': <Folder>[resourceProvider.getFolder(packageD)],
123 };
124
125 DependencyFinder finder = new DependencyFinder(resourceProvider);
126 List<String> result =
127 finder.transitiveDependenciesFor(packageMap, packageA);
128 expect(result, unorderedEquals([packageB, packageC, packageD]));
129 }
130
131 void test_transitiveDependenciesFor_simpleDependencies() {
132 String packageA = '/pub-cache/a-1.0';
133 String packageB = '/pub-cache/b-1.0';
134 String packageC = '/pub-cache/c-1.0';
135 resourceProvider.newFile(
136 '$packageA/$pubspecName',
137 '''
138 dependencies:
139 b: any
140 c: any
141 ''');
142 resourceProvider.newFile('$packageB/$pubspecName', '');
143 resourceProvider.newFile('$packageC/$pubspecName', '');
144 Map<String, List<Folder>> packageMap = <String, List<Folder>>{
145 'a': <Folder>[resourceProvider.getFolder(packageA)],
146 'b': <Folder>[resourceProvider.getFolder(packageB)],
147 'c': <Folder>[resourceProvider.getFolder(packageC)],
148 };
149
150 DependencyFinder finder = new DependencyFinder(resourceProvider);
151 List<String> result =
152 finder.transitiveDependenciesFor(packageMap, packageA);
153 expect(result, unorderedEquals([packageB, packageC]));
154 }
155 }
156
157 @reflectiveTest
158 class PackageDescriptionTest extends ResolverTestCase {
159 void test_equal_false_differentOptions() {
160 String packageId = 'path1;path2';
161 DartSdk sdk = new MockSdk();
162 AnalysisOptionsImpl options1 = new AnalysisOptionsImpl();
163 AnalysisOptionsImpl options2 = new AnalysisOptionsImpl();
164 options2.enableGenericMethods = !options1.enableGenericMethods;
165 PackageDescription first = new PackageDescription(packageId, sdk, options1);
166 PackageDescription second =
167 new PackageDescription(packageId, sdk, options2);
168 expect(first == second, isFalse);
169 }
170
171 void test_equal_false_differentPaths() {
172 String packageId1 = 'path1;path2';
173 String packageId2 = 'path1;path3';
174 DartSdk sdk = new MockSdk();
175 AnalysisOptions options = new AnalysisOptionsImpl();
176 PackageDescription first = new PackageDescription(packageId1, sdk, options);
177 PackageDescription second =
178 new PackageDescription(packageId2, sdk, options);
179 expect(first == second, isFalse);
180 }
181
182 void test_equal_false_differentSdks() {
183 String packageId = 'path1;path2';
184 DartSdk sdk1 = new MockSdk();
185 DartSdk sdk2 = new MockSdk();
186 AnalysisOptions options = new AnalysisOptionsImpl();
187 PackageDescription first = new PackageDescription(packageId, sdk1, options);
188 PackageDescription second =
189 new PackageDescription(packageId, sdk2, options);
190 expect(first == second, isFalse);
191 }
192
193 void test_equal_true() {
194 String packageId = 'path1;path2';
195 DartSdk sdk = new MockSdk();
196 AnalysisOptions options = new AnalysisOptionsImpl();
197 PackageDescription first = new PackageDescription(packageId, sdk, options);
198 PackageDescription second = new PackageDescription(packageId, sdk, options);
199 expect(first == second, isTrue);
200 }
201 }
202
203 @reflectiveTest
204 class PackageManagerTest extends ResolverTestCase {
205 void test_getContext() {
206 String packageA = '/pub-cache/a-1.0';
207 String packageB1 = '/pub-cache/b-1.0';
208 String packageB2 = '/pub-cache/b-2.0';
209 String packageC = '/pub-cache/c-1.0';
210 resourceProvider.newFile(
211 '$packageA/$pubspecName',
212 '''
213 dependencies:
214 b: any
215 c: any
216 ''');
217 resourceProvider.newFile('$packageB1/$pubspecName', '');
218 resourceProvider.newFile('$packageB2/$pubspecName', '');
219 resourceProvider.newFile('$packageC/$pubspecName', '');
220
221 Packages packages1 = new _MockPackages(<String, Uri>{
222 'a': new Uri.file(packageA),
223 'b': new Uri.file(packageB1),
224 'c': new Uri.file(packageC),
225 });
226 DartUriResolver resolver = new DartUriResolver(new MockSdk());
227 AnalysisOptions options = new AnalysisOptionsImpl();
228 //
229 // Verify that we can compute a context for a package.
230 //
231 PackageManager manager = new PackageManager(resourceProvider);
232 AnalysisContext context1 =
233 manager.getContext(packageA, packages1, resolver, options);
234 expect(context1, isNotNull);
235 //
236 // Verify that if we have the same package map we get the same context.
237 //
238 AnalysisContext context2 =
239 manager.getContext(packageA, packages1, resolver, options);
240 expect(context2, same(context1));
241 //
242 // Verify that if we have a different package map we get a different context .
243 //
244 Packages packages3 = new _MockPackages(<String, Uri>{
245 'a': new Uri.file(packageA),
246 'b': new Uri.file(packageB2),
247 'c': new Uri.file(packageC),
248 });
249 AnalysisContext context3 =
250 manager.getContext(packageA, packages3, resolver, options);
251 expect(context3, isNot(same(context1)));
252 }
253 }
254
255 /**
256 * An implementation of [Packages] used for testing.
257 */
258 class _MockPackages implements Packages {
259 final Map<String, Uri> map;
260
261 _MockPackages(this.map);
262
263 @override
264 Iterable<String> get packages => map.keys;
265
266 @override
267 Map<String, Uri> asMap() => map;
268
269 @override
270 Uri resolve(Uri packageUri, {Uri notFound(Uri packageUri)}) {
271 fail('Unexpected invocation of resolve');
272 return null;
273 }
274 }
OLDNEW
« no previous file with comments | « packages/analyzer/test/generated/non_hint_code_test.dart ('k') | packages/analyzer/test/generated/parser_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698