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

Side by Side Diff: pkg/analyzer/test/src/summary/package_bundle_reader_test.dart

Issue 2226093002: Record information about a summary's dependencies in the summary itself. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 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
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 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 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:analyzer/src/context/cache.dart'; 5 import 'package:analyzer/src/context/cache.dart';
6 import 'package:analyzer/src/generated/engine.dart'; 6 import 'package:analyzer/src/generated/engine.dart';
7 import 'package:analyzer/src/generated/source.dart'; 7 import 'package:analyzer/src/generated/source.dart';
8 import 'package:analyzer/src/summary/idl.dart'; 8 import 'package:analyzer/src/summary/idl.dart';
9 import 'package:analyzer/src/summary/package_bundle_reader.dart'; 9 import 'package:analyzer/src/summary/package_bundle_reader.dart';
10 import 'package:analyzer/src/task/dart.dart'; 10 import 'package:analyzer/src/task/dart.dart';
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 106
107 test_compute_SOURCE_KIND_partSource() { 107 test_compute_SOURCE_KIND_partSource() {
108 bool success = provider.compute(entry2, SOURCE_KIND); 108 bool success = provider.compute(entry2, SOURCE_KIND);
109 expect(success, isTrue); 109 expect(success, isTrue);
110 expect(entry2.getValue(SOURCE_KIND), SourceKind.PART); 110 expect(entry2.getValue(SOURCE_KIND), SourceKind.PART);
111 } 111 }
112 } 112 }
113 113
114 @reflectiveTest 114 @reflectiveTest
115 class SummaryDataStoreTest { 115 class SummaryDataStoreTest {
116 SummaryDataStore dataStore = new SummaryDataStore(<String>[]); 116 SummaryDataStore dataStore =
117 new SummaryDataStore(<String>[], recordDependencyInfo: true);
117 118
118 PackageBundle bundle1 = new _PackageBundleMock(); 119 PackageBundle bundle1 = new _PackageBundleMock();
119 PackageBundle bundle2 = new _PackageBundleMock(); 120 PackageBundle bundle2 = new _PackageBundleMock();
120 UnlinkedUnit unlinkedUnit11 = new _UnlinkedUnitMock(); 121 UnlinkedUnit unlinkedUnit11 = new _UnlinkedUnitMock();
121 UnlinkedUnit unlinkedUnit12 = new _UnlinkedUnitMock(); 122 UnlinkedUnit unlinkedUnit12 = new _UnlinkedUnitMock();
122 UnlinkedUnit unlinkedUnit21 = new _UnlinkedUnitMock(); 123 UnlinkedUnit unlinkedUnit21 = new _UnlinkedUnitMock();
123 LinkedLibrary linkedLibrary1 = new _LinkedLibraryMock(); 124 LinkedLibrary linkedLibrary1 = new _LinkedLibraryMock();
124 LinkedLibrary linkedLibrary2 = new _LinkedLibraryMock(); 125 LinkedLibrary linkedLibrary2 = new _LinkedLibraryMock();
125 126
126 void setUp() { 127 void setUp() {
127 // bundle1 128 // bundle1
128 when(unlinkedUnit11.publicNamespace) 129 when(unlinkedUnit11.publicNamespace)
129 .thenReturn(_namespaceWithParts(['package:p1/u2.dart'])); 130 .thenReturn(_namespaceWithParts(['package:p1/u2.dart']));
130 when(unlinkedUnit12.publicNamespace).thenReturn(_namespaceWithParts([])); 131 when(unlinkedUnit12.publicNamespace).thenReturn(_namespaceWithParts([]));
131 when(bundle1.unlinkedUnitUris) 132 when(bundle1.unlinkedUnitUris)
132 .thenReturn(<String>['package:p1/u1.dart', 'package:p1/u2.dart']); 133 .thenReturn(<String>['package:p1/u1.dart', 'package:p1/u2.dart']);
133 when(bundle1.unlinkedUnits) 134 when(bundle1.unlinkedUnits)
134 .thenReturn(<UnlinkedUnit>[unlinkedUnit11, unlinkedUnit12]); 135 .thenReturn(<UnlinkedUnit>[unlinkedUnit11, unlinkedUnit12]);
135 when(bundle1.linkedLibraryUris).thenReturn(<String>['package:p1/u1.dart']); 136 when(bundle1.linkedLibraryUris).thenReturn(<String>['package:p1/u1.dart']);
136 when(bundle1.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary1]); 137 when(bundle1.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary1]);
138 when(bundle1.apiSignature).thenReturn('signature1');
137 dataStore.addBundle('/p1.ds', bundle1); 139 dataStore.addBundle('/p1.ds', bundle1);
138 // bundle2 140 // bundle2
139 when(unlinkedUnit21.publicNamespace).thenReturn(_namespaceWithParts([])); 141 when(unlinkedUnit21.publicNamespace).thenReturn(_namespaceWithParts([]));
140 when(bundle2.unlinkedUnitUris).thenReturn(<String>['package:p2/u1.dart']); 142 when(bundle2.unlinkedUnitUris).thenReturn(<String>['package:p2/u1.dart']);
141 when(bundle2.unlinkedUnits).thenReturn(<UnlinkedUnit>[unlinkedUnit21]); 143 when(bundle2.unlinkedUnits).thenReturn(<UnlinkedUnit>[unlinkedUnit21]);
142 when(bundle2.linkedLibraryUris).thenReturn(<String>['package:p2/u1.dart']); 144 when(bundle2.linkedLibraryUris).thenReturn(<String>['package:p2/u1.dart']);
143 when(bundle2.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary2]); 145 when(bundle2.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary2]);
146 when(bundle2.apiSignature).thenReturn('signature2');
144 dataStore.addBundle('/p2.ds', bundle2); 147 dataStore.addBundle('/p2.ds', bundle2);
145 } 148 }
146 149
147 test_addBundle() { 150 test_addBundle() {
148 expect(dataStore.bundles, unorderedEquals([bundle1, bundle2])); 151 expect(dataStore.bundles, unorderedEquals([bundle1, bundle2]));
152 expect(dataStore.dependencies[0].summaryPath, '/p1.ds');
153 expect(dataStore.dependencies[0].apiSignature, 'signature1');
154 expect(dataStore.dependencies[0].includedPackageNames, ['p1']);
155 expect(dataStore.dependencies[0].includesFileUris, false);
156 expect(dataStore.dependencies[0].includesDartUris, false);
157 expect(dataStore.dependencies[1].summaryPath, '/p2.ds');
158 expect(dataStore.dependencies[1].apiSignature, 'signature2');
159 expect(dataStore.dependencies[1].includedPackageNames, ['p2']);
160 expect(dataStore.dependencies[1].includesFileUris, false);
161 expect(dataStore.dependencies[1].includesDartUris, false);
149 expect(dataStore.uriToSummaryPath, 162 expect(dataStore.uriToSummaryPath,
150 containsPair('package:p1/u1.dart', '/p1.ds')); 163 containsPair('package:p1/u1.dart', '/p1.ds'));
151 // unlinkedMap 164 // unlinkedMap
152 expect(dataStore.unlinkedMap, hasLength(3)); 165 expect(dataStore.unlinkedMap, hasLength(3));
153 expect(dataStore.unlinkedMap, 166 expect(dataStore.unlinkedMap,
154 containsPair('package:p1/u1.dart', unlinkedUnit11)); 167 containsPair('package:p1/u1.dart', unlinkedUnit11));
155 expect(dataStore.unlinkedMap, 168 expect(dataStore.unlinkedMap,
156 containsPair('package:p1/u2.dart', unlinkedUnit12)); 169 containsPair('package:p1/u2.dart', unlinkedUnit12));
157 expect(dataStore.unlinkedMap, 170 expect(dataStore.unlinkedMap,
158 containsPair('package:p2/u1.dart', unlinkedUnit21)); 171 containsPair('package:p2/u1.dart', unlinkedUnit21));
159 // linkedMap 172 // linkedMap
160 expect(dataStore.linkedMap, hasLength(2)); 173 expect(dataStore.linkedMap, hasLength(2));
161 expect(dataStore.linkedMap, 174 expect(dataStore.linkedMap,
162 containsPair('package:p1/u1.dart', linkedLibrary1)); 175 containsPair('package:p1/u1.dart', linkedLibrary1));
163 expect(dataStore.linkedMap, 176 expect(dataStore.linkedMap,
164 containsPair('package:p2/u1.dart', linkedLibrary2)); 177 containsPair('package:p2/u1.dart', linkedLibrary2));
165 } 178 }
166 179
180 test_addBundle_dartUris() {
181 PackageBundle bundle = new _PackageBundleMock();
182 when(bundle.unlinkedUnitUris).thenReturn(<String>['dart:core']);
183 when(bundle.unlinkedUnits).thenReturn(<UnlinkedUnit>[unlinkedUnit11]);
184 when(bundle.linkedLibraryUris).thenReturn(<String>['dart:core']);
185 when(bundle.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary1]);
186 when(bundle.apiSignature).thenReturn('signature');
187 dataStore.addBundle('/p3.ds', bundle);
188 expect(dataStore.dependencies.last.includedPackageNames, []);
189 expect(dataStore.dependencies.last.includesFileUris, false);
190 expect(dataStore.dependencies.last.includesDartUris, true);
191 }
192
193 test_addBundle_fileUris() {
194 PackageBundle bundle = new _PackageBundleMock();
195 when(bundle.unlinkedUnitUris).thenReturn(<String>['file:/foo.dart']);
196 when(bundle.unlinkedUnits).thenReturn(<UnlinkedUnit>[unlinkedUnit11]);
197 when(bundle.linkedLibraryUris).thenReturn(<String>['file:/foo.dart']);
198 when(bundle.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary1]);
199 when(bundle.apiSignature).thenReturn('signature');
200 dataStore.addBundle('/p3.ds', bundle);
201 expect(dataStore.dependencies.last.includedPackageNames, []);
202 expect(dataStore.dependencies.last.includesFileUris, true);
203 expect(dataStore.dependencies.last.includesDartUris, false);
204 }
205
206 test_addBundle_multiProject() {
207 PackageBundle bundle = new _PackageBundleMock();
208 when(bundle.unlinkedUnitUris)
209 .thenReturn(<String>['package:p2/u1.dart', 'package:p1/u1.dart']);
210 when(bundle.unlinkedUnits)
211 .thenReturn(<UnlinkedUnit>[unlinkedUnit21, unlinkedUnit11]);
212 when(bundle.linkedLibraryUris)
213 .thenReturn(<String>['package:p2/u1.dart', 'package:p1/u1.dart']);
214 when(bundle.linkedLibraries)
215 .thenReturn(<LinkedLibrary>[linkedLibrary2, linkedLibrary1]);
216 when(bundle.apiSignature).thenReturn('signature');
217 dataStore.addBundle('/p3.ds', bundle);
218 expect(dataStore.dependencies.last.includedPackageNames, ['p1', 'p2']);
219 }
220
167 test_getContainingLibraryUris_libraryUri() { 221 test_getContainingLibraryUris_libraryUri() {
168 String partUri = 'package:p1/u1.dart'; 222 String partUri = 'package:p1/u1.dart';
169 List<String> uris = dataStore.getContainingLibraryUris(partUri); 223 List<String> uris = dataStore.getContainingLibraryUris(partUri);
170 expect(uris, unorderedEquals([partUri])); 224 expect(uris, unorderedEquals([partUri]));
171 } 225 }
172 226
173 test_getContainingLibraryUris_partUri() { 227 test_getContainingLibraryUris_partUri() {
174 String partUri = 'package:p1/u2.dart'; 228 String partUri = 'package:p1/u2.dart';
175 List<String> uris = dataStore.getContainingLibraryUris(partUri); 229 List<String> uris = dataStore.getContainingLibraryUris(partUri);
176 expect(uris, unorderedEquals(['package:p1/u1.dart'])); 230 expect(uris, unorderedEquals(['package:p1/u1.dart']));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 @override 274 @override
221 bool hasResultsForSource(Source source) { 275 bool hasResultsForSource(Source source) {
222 return sourcesWithResults.contains(source); 276 return sourcesWithResults.contains(source);
223 } 277 }
224 } 278 }
225 279
226 class _UnlinkedPublicNamespaceMock extends TypedMock 280 class _UnlinkedPublicNamespaceMock extends TypedMock
227 implements UnlinkedPublicNamespace {} 281 implements UnlinkedPublicNamespace {}
228 282
229 class _UnlinkedUnitMock extends TypedMock implements UnlinkedUnit {} 283 class _UnlinkedUnitMock extends TypedMock implements UnlinkedUnit {}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698