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

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

Issue 2397933006: Get more tests passing on windows (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « pkg/analyzer/test/src/summary/bazel_summary_test.dart ('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) 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/file_system/file_system.dart'; 5 import 'package:analyzer/file_system/file_system.dart';
6 import 'package:analyzer/source/package_map_resolver.dart'; 6 import 'package:analyzer/source/package_map_resolver.dart';
7 import 'package:analyzer/src/generated/source.dart'; 7 import 'package:analyzer/src/generated/source.dart';
8 import 'package:analyzer/src/summary/format.dart'; 8 import 'package:analyzer/src/summary/format.dart';
9 import 'package:analyzer/src/summary/idl.dart'; 9 import 'package:analyzer/src/summary/idl.dart';
10 import 'package:analyzer/src/summary/pub_summary.dart'; 10 import 'package:analyzer/src/summary/pub_summary.dart';
11 import 'package:analyzer/src/summary/summarize_elements.dart'; 11 import 'package:analyzer/src/summary/summarize_elements.dart';
12 import 'package:analyzer/src/util/fast_uri.dart'; 12 import 'package:analyzer/src/util/fast_uri.dart';
13 import 'package:path/path.dart' as pathos; 13 import 'package:path/path.dart' as pathos;
14 import 'package:test/test.dart'; 14 import 'package:test/test.dart';
15 import 'package:test_reflective_loader/test_reflective_loader.dart'; 15 import 'package:test_reflective_loader/test_reflective_loader.dart';
16 16
17 import '../context/abstract_context.dart'; 17 import '../context/abstract_context.dart';
18 import '../context/mock_sdk.dart'; 18 import '../context/mock_sdk.dart';
19 19
20 main() { 20 main() {
21 defineReflectiveSuite(() { 21 defineReflectiveSuite(() {
22 defineReflectiveTests(PubSummaryManagerTest); 22 defineReflectiveTests(PubSummaryManagerTest);
23 }); 23 });
24 } 24 }
25 25
26 @reflectiveTest 26 @reflectiveTest
27 class PubSummaryManagerTest extends AbstractContextTest { 27 class PubSummaryManagerTest extends AbstractContextTest {
28 /**
29 * The path to the root of the pubcache directory used in these tests. The
30 * path has not been converted to the current platform, and is therefore only
31 * appropriate for composing paths that will later be converted.
32 */
28 static const String CACHE = '/home/.pub-cache/hosted/pub.dartlang.org'; 33 static const String CACHE = '/home/.pub-cache/hosted/pub.dartlang.org';
29 34
30 PubSummaryManager manager; 35 PubSummaryManager manager;
31 36
37 Folder getFolder(String path) =>
38 resourceProvider.getFolder(resourceProvider.convertPath(path));
39
40 File newFile(String path, String content) {
41 //, [int stamp]) {
42 return resourceProvider.newFile(
43 resourceProvider.convertPath(path), content);
44 }
45
46 Folder newFolder(String path) =>
47 resourceProvider.newFolder(resourceProvider.convertPath(path));
48
32 void setUp() { 49 void setUp() {
33 super.setUp(); 50 super.setUp();
34 _createManager(); 51 _createManager();
35 } 52 }
36 53
37 test_computeUnlinkedForFolder() async { 54 test_computeUnlinkedForFolder() async {
38 // Create package files. 55 // Create package files.
39 resourceProvider.newFile( 56 newFile(
40 '/flutter/aaa/lib/a.dart', 57 '/flutter/aaa/lib/a.dart',
41 ''' 58 '''
42 class A {} 59 class A {}
43 '''); 60 ''');
44 resourceProvider.newFile( 61 newFile(
45 '/flutter/bbb/lib/b.dart', 62 '/flutter/bbb/lib/b.dart',
46 ''' 63 '''
47 class B {} 64 class B {}
48 '''); 65 ''');
49 66
50 // Configure packages resolution. 67 // Configure packages resolution.
51 Folder libFolderA = resourceProvider.newFolder('/flutter/aaa/lib'); 68 Folder libFolderA = newFolder('/flutter/aaa/lib');
52 Folder libFolderB = resourceProvider.newFolder('/flutter/bbb/lib'); 69 Folder libFolderB = newFolder('/flutter/bbb/lib');
53 context.sourceFactory = new SourceFactory(<UriResolver>[ 70 context.sourceFactory = new SourceFactory(<UriResolver>[
54 sdkResolver, 71 sdkResolver,
55 resourceResolver, 72 resourceResolver,
56 new PackageMapUriResolver(resourceProvider, { 73 new PackageMapUriResolver(resourceProvider, {
57 'aaa': [libFolderA], 74 'aaa': [libFolderA],
58 'bbb': [libFolderB], 75 'bbb': [libFolderB],
59 }) 76 })
60 ]); 77 ]);
61 78
62 await manager.computeUnlinkedForFolder('aaa', libFolderA); 79 await manager.computeUnlinkedForFolder('aaa', libFolderA);
63 await manager.computeUnlinkedForFolder('bbb', libFolderB); 80 await manager.computeUnlinkedForFolder('bbb', libFolderB);
64 81
65 // The files must be created. 82 // The files must be created.
66 _assertFileExists(libFolderA.parent, PubSummaryManager.UNLINKED_NAME); 83 _assertFileExists(libFolderA.parent, PubSummaryManager.UNLINKED_NAME);
67 _assertFileExists(libFolderA.parent, PubSummaryManager.UNLINKED_SPEC_NAME); 84 _assertFileExists(libFolderA.parent, PubSummaryManager.UNLINKED_SPEC_NAME);
68 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_NAME); 85 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_NAME);
69 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_SPEC_NAME); 86 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_SPEC_NAME);
70 } 87 }
71 88
72 test_getLinkedBundles_cached() async { 89 test_getLinkedBundles_cached() async {
73 String pathA1 = '$CACHE/aaa-1.0.0'; 90 String pathA1 = '$CACHE/aaa-1.0.0';
74 String pathA2 = '$CACHE/aaa-2.0.0'; 91 String pathA2 = '$CACHE/aaa-2.0.0';
75 resourceProvider.newFile( 92 newFile(
76 '$pathA1/lib/a.dart', 93 '$pathA1/lib/a.dart',
77 ''' 94 '''
78 class A {} 95 class A {}
79 int a; 96 int a;
80 '''); 97 ''');
81 resourceProvider.newFile( 98 newFile(
82 '$pathA2/lib/a.dart', 99 '$pathA2/lib/a.dart',
83 ''' 100 '''
84 class A2 {} 101 class A2 {}
85 int a; 102 int a;
86 '''); 103 ''');
87 resourceProvider.newFile( 104 newFile(
88 '$CACHE/bbb/lib/b.dart', 105 '$CACHE/bbb/lib/b.dart',
89 ''' 106 '''
90 import 'package:aaa/a.dart'; 107 import 'package:aaa/a.dart';
91 A b; 108 A b;
92 '''); 109 ''');
93 Folder folderA1 = resourceProvider.getFolder(pathA1); 110 Folder folderA1 = getFolder(pathA1);
94 Folder folderA2 = resourceProvider.getFolder(pathA2); 111 Folder folderA2 = getFolder(pathA2);
95 Folder folderB = resourceProvider.getFolder('$CACHE/bbb'); 112 Folder folderB = getFolder('$CACHE/bbb');
96 113
97 // Configure packages resolution. 114 // Configure packages resolution.
98 Folder libFolderA1 = resourceProvider.newFolder('$pathA1/lib'); 115 Folder libFolderA1 = newFolder('$pathA1/lib');
99 Folder libFolderA2 = resourceProvider.newFolder('$pathA2/lib'); 116 Folder libFolderA2 = newFolder('$pathA2/lib');
100 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 117 Folder libFolderB = newFolder('$CACHE/bbb/lib');
101 context.sourceFactory = new SourceFactory(<UriResolver>[ 118 context.sourceFactory = new SourceFactory(<UriResolver>[
102 sdkResolver, 119 sdkResolver,
103 resourceResolver, 120 resourceResolver,
104 new PackageMapUriResolver(resourceProvider, { 121 new PackageMapUriResolver(resourceProvider, {
105 'aaa': [libFolderA1], 122 'aaa': [libFolderA1],
106 'bbb': [libFolderB], 123 'bbb': [libFolderB],
107 }) 124 })
108 ]); 125 ]);
109 126
110 // Session 1. 127 // Session 1.
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 test_getLinkedBundles_cached_declaredVariables_export() async { 194 test_getLinkedBundles_cached_declaredVariables_export() async {
178 await _testImpl_getLinkedBundles_cached_declaredVariables('export'); 195 await _testImpl_getLinkedBundles_cached_declaredVariables('export');
179 } 196 }
180 197
181 test_getLinkedBundles_cached_declaredVariables_import() async { 198 test_getLinkedBundles_cached_declaredVariables_import() async {
182 await _testImpl_getLinkedBundles_cached_declaredVariables('import'); 199 await _testImpl_getLinkedBundles_cached_declaredVariables('import');
183 } 200 }
184 201
185 test_getLinkedBundles_cached_differentSdk() async { 202 test_getLinkedBundles_cached_differentSdk() async {
186 String pathA = '$CACHE/aaa'; 203 String pathA = '$CACHE/aaa';
187 resourceProvider.newFile( 204 newFile(
188 '$pathA/lib/a.dart', 205 '$pathA/lib/a.dart',
189 ''' 206 '''
190 class A {} 207 class A {}
191 int a; 208 int a;
192 '''); 209 ''');
193 resourceProvider.newFile( 210 newFile(
194 '$CACHE/bbb/lib/b.dart', 211 '$CACHE/bbb/lib/b.dart',
195 ''' 212 '''
196 import 'package:aaa/a.dart'; 213 import 'package:aaa/a.dart';
197 A b; 214 A b;
198 '''); 215 ''');
199 Folder folderA = resourceProvider.getFolder(pathA); 216 Folder folderA = getFolder(pathA);
200 Folder folderB = resourceProvider.getFolder('$CACHE/bbb'); 217 Folder folderB = getFolder('$CACHE/bbb');
201 218
202 // Configure packages resolution. 219 // Configure packages resolution.
203 Folder libFolderA = resourceProvider.newFolder('$pathA/lib'); 220 Folder libFolderA = newFolder('$pathA/lib');
204 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 221 Folder libFolderB = newFolder('$CACHE/bbb/lib');
205 context.sourceFactory = new SourceFactory(<UriResolver>[ 222 context.sourceFactory = new SourceFactory(<UriResolver>[
206 sdkResolver, 223 sdkResolver,
207 resourceResolver, 224 resourceResolver,
208 new PackageMapUriResolver(resourceProvider, { 225 new PackageMapUriResolver(resourceProvider, {
209 'aaa': [libFolderA], 226 'aaa': [libFolderA],
210 'bbb': [libFolderB], 227 'bbb': [libFolderB],
211 }) 228 })
212 ]); 229 ]);
213 230
214 // Session 1. 231 // Session 1.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 LinkedPubPackage packageB = _getLinkedPackage(linkedPackages, 'bbb'); 280 LinkedPubPackage packageB = _getLinkedPackage(linkedPackages, 'bbb');
264 expect(packageA.linkedHash, isNot(linkedHashA)); 281 expect(packageA.linkedHash, isNot(linkedHashA));
265 expect(packageB.linkedHash, isNot(linkedHashB)); 282 expect(packageB.linkedHash, isNot(linkedHashB));
266 _assertFileExists(folderA, 'linked_spec_${packageA.linkedHash}.ds'); 283 _assertFileExists(folderA, 'linked_spec_${packageA.linkedHash}.ds');
267 _assertFileExists(folderB, 'linked_spec_${packageB.linkedHash}.ds'); 284 _assertFileExists(folderB, 'linked_spec_${packageB.linkedHash}.ds');
268 } 285 }
269 } 286 }
270 287
271 test_getLinkedBundles_cached_inconsistent_majorVersion() async { 288 test_getLinkedBundles_cached_inconsistent_majorVersion() async {
272 String pathA = '$CACHE/aaa'; 289 String pathA = '$CACHE/aaa';
273 resourceProvider.newFile( 290 newFile(
274 '$pathA/lib/a.dart', 291 '$pathA/lib/a.dart',
275 ''' 292 '''
276 class A {} 293 class A {}
277 int a; 294 int a;
278 '''); 295 ''');
279 // Configure packages resolution. 296 // Configure packages resolution.
280 Folder libFolderA = resourceProvider.newFolder('$pathA/lib'); 297 Folder libFolderA = newFolder('$pathA/lib');
281 context.sourceFactory = new SourceFactory(<UriResolver>[ 298 context.sourceFactory = new SourceFactory(<UriResolver>[
282 sdkResolver, 299 sdkResolver,
283 resourceResolver, 300 resourceResolver,
284 new PackageMapUriResolver(resourceProvider, { 301 new PackageMapUriResolver(resourceProvider, {
285 'aaa': [libFolderA], 302 'aaa': [libFolderA],
286 }) 303 })
287 ]); 304 ]);
288 305
289 // Session 1. 306 // Session 1.
290 // Create the linked bundle and cache it in a file. 307 // Create the linked bundle and cache it in a file.
(...skipping 12 matching lines...) Expand all
303 // It cannot use the previously cache linked bundle. 320 // It cannot use the previously cache linked bundle.
304 // The reason is that we cannot use the cached unlinked bundle. 321 // The reason is that we cannot use the cached unlinked bundle.
305 { 322 {
306 _createManager(majorVersion: 12345); 323 _createManager(majorVersion: 12345);
307 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); 324 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
308 expect(linkedPackages, isEmpty); 325 expect(linkedPackages, isEmpty);
309 } 326 }
310 } 327 }
311 328
312 test_getLinkedBundles_hasCycle() async { 329 test_getLinkedBundles_hasCycle() async {
313 resourceProvider.newFile( 330 newFile(
314 '$CACHE/aaa/lib/a.dart', 331 '$CACHE/aaa/lib/a.dart',
315 ''' 332 '''
316 import 'package:bbb/b.dart'; 333 import 'package:bbb/b.dart';
317 class A {} 334 class A {}
318 int a1; 335 int a1;
319 B a2; 336 B a2;
320 '''); 337 ''');
321 resourceProvider.newFile( 338 newFile(
322 '$CACHE/bbb/lib/b.dart', 339 '$CACHE/bbb/lib/b.dart',
323 ''' 340 '''
324 import 'package:ccc/c.dart'; 341 import 'package:ccc/c.dart';
325 class B {} 342 class B {}
326 C b; 343 C b;
327 '''); 344 ''');
328 resourceProvider.newFile( 345 newFile(
329 '$CACHE/ccc/lib/c.dart', 346 '$CACHE/ccc/lib/c.dart',
330 ''' 347 '''
331 import 'package:aaa/a.dart'; 348 import 'package:aaa/a.dart';
332 import 'package:ddd/d.dart'; 349 import 'package:ddd/d.dart';
333 class C {} 350 class C {}
334 A c1; 351 A c1;
335 D c2; 352 D c2;
336 '''); 353 ''');
337 resourceProvider.newFile( 354 newFile(
338 '$CACHE/ddd/lib/d.dart', 355 '$CACHE/ddd/lib/d.dart',
339 ''' 356 '''
340 class D {} 357 class D {}
341 String d; 358 String d;
342 '''); 359 ''');
343 360
344 // Configure packages resolution. 361 // Configure packages resolution.
345 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 362 Folder libFolderA = newFolder('$CACHE/aaa/lib');
346 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 363 Folder libFolderB = newFolder('$CACHE/bbb/lib');
347 Folder libFolderC = resourceProvider.newFolder('$CACHE/ccc/lib'); 364 Folder libFolderC = newFolder('$CACHE/ccc/lib');
348 Folder libFolderD = resourceProvider.newFolder('$CACHE/ddd/lib'); 365 Folder libFolderD = newFolder('$CACHE/ddd/lib');
349 context.sourceFactory = new SourceFactory(<UriResolver>[ 366 context.sourceFactory = new SourceFactory(<UriResolver>[
350 sdkResolver, 367 sdkResolver,
351 resourceResolver, 368 resourceResolver,
352 new PackageMapUriResolver(resourceProvider, { 369 new PackageMapUriResolver(resourceProvider, {
353 'aaa': [libFolderA], 370 'aaa': [libFolderA],
354 'bbb': [libFolderB], 371 'bbb': [libFolderB],
355 'ccc': [libFolderC], 372 'ccc': [libFolderC],
356 'ddd': [libFolderD], 373 'ddd': [libFolderD],
357 }) 374 })
358 ]); 375 ]);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 { 417 {
401 LinkedPubPackage linkedPackage = linkedPackages 418 LinkedPubPackage linkedPackage = linkedPackages
402 .singleWhere((linkedPackage) => linkedPackage.package.name == 'ddd'); 419 .singleWhere((linkedPackage) => linkedPackage.package.name == 'ddd');
403 expect(linkedPackage.linked.linkedLibraryUris, ['package:ddd/d.dart']); 420 expect(linkedPackage.linked.linkedLibraryUris, ['package:ddd/d.dart']);
404 _assertHasLinkedVariable(linkedPackage, 'd', 'String', 421 _assertHasLinkedVariable(linkedPackage, 'd', 'String',
405 expectedTypeNameUri: 'dart:core'); 422 expectedTypeNameUri: 'dart:core');
406 } 423 }
407 } 424 }
408 425
409 test_getLinkedBundles_missingBundle_listed() async { 426 test_getLinkedBundles_missingBundle_listed() async {
410 resourceProvider.newFile( 427 newFile(
411 '$CACHE/aaa/lib/a.dart', 428 '$CACHE/aaa/lib/a.dart',
412 ''' 429 '''
413 import 'package:bbb/b.dart'; 430 import 'package:bbb/b.dart';
414 B a; 431 B a;
415 '''); 432 ''');
416 resourceProvider.newFile( 433 newFile(
417 '$CACHE/bbb/lib/b.dart', 434 '$CACHE/bbb/lib/b.dart',
418 ''' 435 '''
419 class B {} 436 class B {}
420 '''); 437 ''');
421 438
422 // Configure packages resolution. 439 // Configure packages resolution.
423 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 440 Folder libFolderA = newFolder('$CACHE/aaa/lib');
424 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 441 Folder libFolderB = newFolder('$CACHE/bbb/lib');
425 context.sourceFactory = new SourceFactory(<UriResolver>[ 442 context.sourceFactory = new SourceFactory(<UriResolver>[
426 sdkResolver, 443 sdkResolver,
427 resourceResolver, 444 resourceResolver,
428 new PackageMapUriResolver(resourceProvider, { 445 new PackageMapUriResolver(resourceProvider, {
429 'aaa': [libFolderA], 446 'aaa': [libFolderA],
430 'bbb': [libFolderB], 447 'bbb': [libFolderB],
431 }) 448 })
432 ]); 449 ]);
433 450
434 // Ensure unlinked bundles for 'aaa'. 451 // Ensure unlinked bundles for 'aaa'.
435 await manager.computeUnlinkedForFolder('aaa', libFolderA); 452 await manager.computeUnlinkedForFolder('aaa', libFolderA);
436 453
437 // Try to link. 454 // Try to link.
438 // Neither 'aaa' nor 'bbb' are linked. 455 // Neither 'aaa' nor 'bbb' are linked.
439 // 'bbb' does not have the unlinked bundle. 456 // 'bbb' does not have the unlinked bundle.
440 // 'aaa' is not linked because it references 'bbb', which is listed. 457 // 'aaa' is not linked because it references 'bbb', which is listed.
441 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); 458 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
442 expect(linkedPackages, hasLength(0)); 459 expect(linkedPackages, hasLength(0));
443 } 460 }
444 461
445 test_getLinkedBundles_missingBundle_listed_chained() async { 462 test_getLinkedBundles_missingBundle_listed_chained() async {
446 resourceProvider.newFile( 463 newFile(
447 '$CACHE/aaa/lib/a.dart', 464 '$CACHE/aaa/lib/a.dart',
448 ''' 465 '''
449 import 'package:bbb/b.dart'; 466 import 'package:bbb/b.dart';
450 '''); 467 ''');
451 resourceProvider.newFile( 468 newFile(
452 '$CACHE/bbb/lib/b.dart', 469 '$CACHE/bbb/lib/b.dart',
453 ''' 470 '''
454 import 'package:ccc/c.dart'; 471 import 'package:ccc/c.dart';
455 '''); 472 ''');
456 resourceProvider.newFile( 473 newFile(
457 '$CACHE/ccc/lib/c.dart', 474 '$CACHE/ccc/lib/c.dart',
458 ''' 475 '''
459 class C {} 476 class C {}
460 '''); 477 ''');
461 478
462 // Configure packages resolution. 479 // Configure packages resolution.
463 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 480 Folder libFolderA = newFolder('$CACHE/aaa/lib');
464 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 481 Folder libFolderB = newFolder('$CACHE/bbb/lib');
465 Folder libFolderC = resourceProvider.newFolder('$CACHE/ccc/lib'); 482 Folder libFolderC = newFolder('$CACHE/ccc/lib');
466 context.sourceFactory = new SourceFactory(<UriResolver>[ 483 context.sourceFactory = new SourceFactory(<UriResolver>[
467 sdkResolver, 484 sdkResolver,
468 resourceResolver, 485 resourceResolver,
469 new PackageMapUriResolver(resourceProvider, { 486 new PackageMapUriResolver(resourceProvider, {
470 'aaa': [libFolderA], 487 'aaa': [libFolderA],
471 'bbb': [libFolderB], 488 'bbb': [libFolderB],
472 'ccc': [libFolderC], 489 'ccc': [libFolderC],
473 }) 490 })
474 ]); 491 ]);
475 492
476 // Ensure unlinked bundles. 493 // Ensure unlinked bundles.
477 await manager.computeUnlinkedForFolder('aaa', libFolderA); 494 await manager.computeUnlinkedForFolder('aaa', libFolderA);
478 await manager.computeUnlinkedForFolder('bbb', libFolderB); 495 await manager.computeUnlinkedForFolder('bbb', libFolderB);
479 496
480 // Try to link. 497 // Try to link.
481 // Neither 'aaa' nor 'bbb' are linked. 498 // Neither 'aaa' nor 'bbb' are linked.
482 // 'ccc' is listed in the package map, but its unlinked bundle is not ready. 499 // 'ccc' is listed in the package map, but its unlinked bundle is not ready.
483 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); 500 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
484 expect(linkedPackages, hasLength(0)); 501 expect(linkedPackages, hasLength(0));
485 } 502 }
486 503
487 test_getLinkedBundles_missingBundle_listed_partial() async { 504 test_getLinkedBundles_missingBundle_listed_partial() async {
488 resourceProvider.newFile( 505 newFile(
489 '$CACHE/aaa/lib/a.dart', 506 '$CACHE/aaa/lib/a.dart',
490 ''' 507 '''
491 int a; 508 int a;
492 '''); 509 ''');
493 resourceProvider.newFile( 510 newFile(
494 '$CACHE/bbb/lib/b.dart', 511 '$CACHE/bbb/lib/b.dart',
495 ''' 512 '''
496 import 'package:ccc/c.dart'; 513 import 'package:ccc/c.dart';
497 C b; 514 C b;
498 '''); 515 ''');
499 resourceProvider.newFile( 516 newFile(
500 '$CACHE/ccc/lib/c.dart', 517 '$CACHE/ccc/lib/c.dart',
501 ''' 518 '''
502 class C {} 519 class C {}
503 '''); 520 ''');
504 521
505 // Configure packages resolution. 522 // Configure packages resolution.
506 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 523 Folder libFolderA = newFolder('$CACHE/aaa/lib');
507 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 524 Folder libFolderB = newFolder('$CACHE/bbb/lib');
508 Folder libFolderC = resourceProvider.newFolder('$CACHE/ccc/lib'); 525 Folder libFolderC = newFolder('$CACHE/ccc/lib');
509 context.sourceFactory = new SourceFactory(<UriResolver>[ 526 context.sourceFactory = new SourceFactory(<UriResolver>[
510 sdkResolver, 527 sdkResolver,
511 resourceResolver, 528 resourceResolver,
512 new PackageMapUriResolver(resourceProvider, { 529 new PackageMapUriResolver(resourceProvider, {
513 'aaa': [libFolderA], 530 'aaa': [libFolderA],
514 'bbb': [libFolderB], 531 'bbb': [libFolderB],
515 'ccc': [libFolderC], 532 'ccc': [libFolderC],
516 }) 533 })
517 ]); 534 ]);
518 535
(...skipping 10 matching lines...) Expand all
529 // package:aaa 546 // package:aaa
530 { 547 {
531 LinkedPubPackage linkedPackage = linkedPackages 548 LinkedPubPackage linkedPackage = linkedPackages
532 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); 549 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
533 _assertHasLinkedVariable(linkedPackage, 'a', 'int', 550 _assertHasLinkedVariable(linkedPackage, 'a', 'int',
534 expectedTypeNameUri: 'dart:core'); 551 expectedTypeNameUri: 'dart:core');
535 } 552 }
536 } 553 }
537 554
538 test_getLinkedBundles_missingBundle_notListed() async { 555 test_getLinkedBundles_missingBundle_notListed() async {
539 resourceProvider.newFile( 556 newFile(
540 '$CACHE/aaa/lib/a.dart', 557 '$CACHE/aaa/lib/a.dart',
541 ''' 558 '''
542 int a; 559 int a;
543 '''); 560 ''');
544 resourceProvider.newFile( 561 newFile(
545 '$CACHE/bbb/lib/b.dart', 562 '$CACHE/bbb/lib/b.dart',
546 ''' 563 '''
547 import 'package:ccc/c.dart'; 564 import 'package:ccc/c.dart';
548 int b1; 565 int b1;
549 C b2; 566 C b2;
550 '''); 567 ''');
551 568
552 // Configure packages resolution. 569 // Configure packages resolution.
553 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 570 Folder libFolderA = newFolder('$CACHE/aaa/lib');
554 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 571 Folder libFolderB = newFolder('$CACHE/bbb/lib');
555 context.sourceFactory = new SourceFactory(<UriResolver>[ 572 context.sourceFactory = new SourceFactory(<UriResolver>[
556 sdkResolver, 573 sdkResolver,
557 resourceResolver, 574 resourceResolver,
558 new PackageMapUriResolver(resourceProvider, { 575 new PackageMapUriResolver(resourceProvider, {
559 'aaa': [libFolderA], 576 'aaa': [libFolderA],
560 'bbb': [libFolderB], 577 'bbb': [libFolderB],
561 }) 578 })
562 ]); 579 ]);
563 580
564 // Ensure unlinked bundles. 581 // Ensure unlinked bundles.
(...skipping 20 matching lines...) Expand all
585 LinkedPubPackage linkedPackage = linkedPackages 602 LinkedPubPackage linkedPackage = linkedPackages
586 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb'); 603 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb');
587 _assertHasLinkedVariable(linkedPackage, 'b1', 'int', 604 _assertHasLinkedVariable(linkedPackage, 'b1', 'int',
588 expectedTypeNameUri: 'dart:core'); 605 expectedTypeNameUri: 'dart:core');
589 _assertHasLinkedVariable(linkedPackage, 'b2', 'C', 606 _assertHasLinkedVariable(linkedPackage, 'b2', 'C',
590 expectedToBeResolved: false); 607 expectedToBeResolved: false);
591 } 608 }
592 } 609 }
593 610
594 test_getLinkedBundles_missingLibrary() async { 611 test_getLinkedBundles_missingLibrary() async {
595 resourceProvider.newFile( 612 newFile(
596 '$CACHE/aaa/lib/a.dart', 613 '$CACHE/aaa/lib/a.dart',
597 ''' 614 '''
598 import 'package:bbb/b2.dart'; 615 import 'package:bbb/b2.dart';
599 int a1; 616 int a1;
600 B2 a2; 617 B2 a2;
601 '''); 618 ''');
602 resourceProvider.newFile( 619 newFile(
603 '$CACHE/bbb/lib/b.dart', 620 '$CACHE/bbb/lib/b.dart',
604 ''' 621 '''
605 class B {} 622 class B {}
606 int b = 42; 623 int b = 42;
607 '''); 624 ''');
608 625
609 // Configure packages resolution. 626 // Configure packages resolution.
610 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 627 Folder libFolderA = newFolder('$CACHE/aaa/lib');
611 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 628 Folder libFolderB = newFolder('$CACHE/bbb/lib');
612 context.sourceFactory = new SourceFactory(<UriResolver>[ 629 context.sourceFactory = new SourceFactory(<UriResolver>[
613 sdkResolver, 630 sdkResolver,
614 resourceResolver, 631 resourceResolver,
615 new PackageMapUriResolver(resourceProvider, { 632 new PackageMapUriResolver(resourceProvider, {
616 'aaa': [libFolderA], 633 'aaa': [libFolderA],
617 'bbb': [libFolderB], 634 'bbb': [libFolderB],
618 }) 635 })
619 ]); 636 ]);
620 637
621 // Ensure unlinked bundles. 638 // Ensure unlinked bundles.
(...skipping 19 matching lines...) Expand all
641 // package:bbb 658 // package:bbb
642 { 659 {
643 LinkedPubPackage linkedPackage = linkedPackages 660 LinkedPubPackage linkedPackage = linkedPackages
644 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb'); 661 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb');
645 _assertHasLinkedVariable(linkedPackage, 'b', 'int', 662 _assertHasLinkedVariable(linkedPackage, 'b', 'int',
646 expectedTypeNameUri: 'dart:core'); 663 expectedTypeNameUri: 'dart:core');
647 } 664 }
648 } 665 }
649 666
650 test_getLinkedBundles_missingLibrary_hasCycle() async { 667 test_getLinkedBundles_missingLibrary_hasCycle() async {
651 resourceProvider.newFile( 668 newFile(
652 '$CACHE/aaa/lib/a.dart', 669 '$CACHE/aaa/lib/a.dart',
653 ''' 670 '''
654 import 'package:bbb/b.dart'; 671 import 'package:bbb/b.dart';
655 B a; 672 B a;
656 '''); 673 ''');
657 resourceProvider.newFile( 674 newFile(
658 '$CACHE/bbb/lib/b.dart', 675 '$CACHE/bbb/lib/b.dart',
659 ''' 676 '''
660 import 'package:aaa/a.dart'; 677 import 'package:aaa/a.dart';
661 import 'package:ccc/c2.dart'; 678 import 'package:ccc/c2.dart';
662 class B {} 679 class B {}
663 int b1; 680 int b1;
664 C2 b2; 681 C2 b2;
665 '''); 682 ''');
666 resourceProvider.newFile( 683 newFile(
667 '$CACHE/ccc/lib/c.dart', 684 '$CACHE/ccc/lib/c.dart',
668 ''' 685 '''
669 class C {} 686 class C {}
670 int c; 687 int c;
671 '''); 688 ''');
672 689
673 // Configure packages resolution. 690 // Configure packages resolution.
674 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 691 Folder libFolderA = newFolder('$CACHE/aaa/lib');
675 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 692 Folder libFolderB = newFolder('$CACHE/bbb/lib');
676 Folder libFolderC = resourceProvider.newFolder('$CACHE/ccc/lib'); 693 Folder libFolderC = newFolder('$CACHE/ccc/lib');
677 context.sourceFactory = new SourceFactory(<UriResolver>[ 694 context.sourceFactory = new SourceFactory(<UriResolver>[
678 sdkResolver, 695 sdkResolver,
679 resourceResolver, 696 resourceResolver,
680 new PackageMapUriResolver(resourceProvider, { 697 new PackageMapUriResolver(resourceProvider, {
681 'aaa': [libFolderA], 698 'aaa': [libFolderA],
682 'bbb': [libFolderB], 699 'bbb': [libFolderB],
683 'ccc': [libFolderC], 700 'ccc': [libFolderC],
684 }) 701 })
685 ]); 702 ]);
686 703
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 // package:ccc 735 // package:ccc
719 { 736 {
720 LinkedPubPackage linkedPackage = linkedPackages 737 LinkedPubPackage linkedPackage = linkedPackages
721 .singleWhere((linkedPackage) => linkedPackage.package.name == 'ccc'); 738 .singleWhere((linkedPackage) => linkedPackage.package.name == 'ccc');
722 _assertHasLinkedVariable(linkedPackage, 'c', 'int', 739 _assertHasLinkedVariable(linkedPackage, 'c', 'int',
723 expectedTypeNameUri: 'dart:core'); 740 expectedTypeNameUri: 'dart:core');
724 } 741 }
725 } 742 }
726 743
727 test_getLinkedBundles_noCycle() async { 744 test_getLinkedBundles_noCycle() async {
728 resourceProvider.newFile( 745 newFile(
729 '$CACHE/aaa/lib/a.dart', 746 '$CACHE/aaa/lib/a.dart',
730 ''' 747 '''
731 class A {} 748 class A {}
732 int a; 749 int a;
733 '''); 750 ''');
734 resourceProvider.newFile( 751 newFile(
735 '$CACHE/bbb/lib/b.dart', 752 '$CACHE/bbb/lib/b.dart',
736 ''' 753 '''
737 import 'package:aaa/a.dart'; 754 import 'package:aaa/a.dart';
738 A b; 755 A b;
739 '''); 756 ''');
740 757
741 // Configure packages resolution. 758 // Configure packages resolution.
742 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 759 Folder libFolderA = newFolder('$CACHE/aaa/lib');
743 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 760 Folder libFolderB = newFolder('$CACHE/bbb/lib');
744 context.sourceFactory = new SourceFactory(<UriResolver>[ 761 context.sourceFactory = new SourceFactory(<UriResolver>[
745 sdkResolver, 762 sdkResolver,
746 resourceResolver, 763 resourceResolver,
747 new PackageMapUriResolver(resourceProvider, { 764 new PackageMapUriResolver(resourceProvider, {
748 'aaa': [libFolderA], 765 'aaa': [libFolderA],
749 'bbb': [libFolderB], 766 'bbb': [libFolderB],
750 }) 767 })
751 ]); 768 ]);
752 769
753 // Ensure unlinked bundles. 770 // Ensure unlinked bundles.
(...skipping 15 matching lines...) Expand all
769 // package:bbb 786 // package:bbb
770 { 787 {
771 LinkedPubPackage linkedPackage = linkedPackages 788 LinkedPubPackage linkedPackage = linkedPackages
772 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb'); 789 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb');
773 _assertHasLinkedVariable(linkedPackage, 'b', 'A', 790 _assertHasLinkedVariable(linkedPackage, 'b', 'A',
774 expectedTypeNameUri: 'package:aaa/a.dart'); 791 expectedTypeNameUri: 'package:aaa/a.dart');
775 } 792 }
776 } 793 }
777 794
778 test_getLinkedBundles_noCycle_relativeUri() async { 795 test_getLinkedBundles_noCycle_relativeUri() async {
779 resourceProvider.newFile( 796 newFile(
780 '$CACHE/aaa/lib/a.dart', 797 '$CACHE/aaa/lib/a.dart',
781 ''' 798 '''
782 import 'src/a2.dart'; 799 import 'src/a2.dart';
783 A a; 800 A a;
784 '''); 801 ''');
785 resourceProvider.newFile( 802 newFile(
786 '$CACHE/aaa/lib/src/a2.dart', 803 '$CACHE/aaa/lib/src/a2.dart',
787 ''' 804 '''
788 class A {} 805 class A {}
789 '''); 806 ''');
790 807
791 // Configure packages resolution. 808 // Configure packages resolution.
792 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 809 Folder libFolderA = newFolder('$CACHE/aaa/lib');
793 context.sourceFactory = new SourceFactory(<UriResolver>[ 810 context.sourceFactory = new SourceFactory(<UriResolver>[
794 sdkResolver, 811 sdkResolver,
795 resourceResolver, 812 resourceResolver,
796 new PackageMapUriResolver(resourceProvider, { 813 new PackageMapUriResolver(resourceProvider, {
797 'aaa': [libFolderA], 814 'aaa': [libFolderA],
798 }) 815 })
799 ]); 816 ]);
800 817
801 // Ensure unlinked bundles. 818 // Ensure unlinked bundles.
802 manager.getUnlinkedBundles(context); 819 manager.getUnlinkedBundles(context);
803 await manager.onUnlinkedComplete; 820 await manager.onUnlinkedComplete;
804 821
805 // Link. 822 // Link.
806 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); 823 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
807 expect(linkedPackages, hasLength(1)); 824 expect(linkedPackages, hasLength(1));
808 825
809 // package:aaa 826 // package:aaa
810 { 827 {
811 LinkedPubPackage linkedPackage = linkedPackages 828 LinkedPubPackage linkedPackage = linkedPackages
812 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); 829 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
813 _assertHasLinkedVariable(linkedPackage, 'a', 'A', 830 _assertHasLinkedVariable(linkedPackage, 'a', 'A',
814 expectedTypeNameUri: 'src/a2.dart'); 831 expectedTypeNameUri: 'src/a2.dart');
815 } 832 }
816 } 833 }
817 834
818 test_getLinkedBundles_noCycle_withExport() async { 835 test_getLinkedBundles_noCycle_withExport() async {
819 resourceProvider.newFile( 836 newFile(
820 '$CACHE/aaa/lib/a.dart', 837 '$CACHE/aaa/lib/a.dart',
821 ''' 838 '''
822 import 'package:bbb/b.dart'; 839 import 'package:bbb/b.dart';
823 C a; 840 C a;
824 '''); 841 ''');
825 resourceProvider.newFile( 842 newFile(
826 '$CACHE/bbb/lib/b.dart', 843 '$CACHE/bbb/lib/b.dart',
827 ''' 844 '''
828 export 'package:ccc/c.dart'; 845 export 'package:ccc/c.dart';
829 '''); 846 ''');
830 resourceProvider.newFile( 847 newFile(
831 '$CACHE/ccc/lib/c.dart', 848 '$CACHE/ccc/lib/c.dart',
832 ''' 849 '''
833 class C {} 850 class C {}
834 '''); 851 ''');
835 852
836 // Configure packages resolution. 853 // Configure packages resolution.
837 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 854 Folder libFolderA = newFolder('$CACHE/aaa/lib');
838 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 855 Folder libFolderB = newFolder('$CACHE/bbb/lib');
839 Folder libFolderC = resourceProvider.newFolder('$CACHE/ccc/lib'); 856 Folder libFolderC = newFolder('$CACHE/ccc/lib');
840 context.sourceFactory = new SourceFactory(<UriResolver>[ 857 context.sourceFactory = new SourceFactory(<UriResolver>[
841 sdkResolver, 858 sdkResolver,
842 resourceResolver, 859 resourceResolver,
843 new PackageMapUriResolver(resourceProvider, { 860 new PackageMapUriResolver(resourceProvider, {
844 'aaa': [libFolderA], 861 'aaa': [libFolderA],
845 'bbb': [libFolderB], 862 'bbb': [libFolderB],
846 'ccc': [libFolderC], 863 'ccc': [libFolderC],
847 }) 864 })
848 ]); 865 ]);
849 866
850 // Ensure unlinked bundles. 867 // Ensure unlinked bundles.
851 manager.getUnlinkedBundles(context); 868 manager.getUnlinkedBundles(context);
852 await manager.onUnlinkedComplete; 869 await manager.onUnlinkedComplete;
853 870
854 // Now we should be able to get linked bundles. 871 // Now we should be able to get linked bundles.
855 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); 872 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context);
856 expect(linkedPackages, hasLength(3)); 873 expect(linkedPackages, hasLength(3));
857 874
858 // package:aaa 875 // package:aaa
859 { 876 {
860 LinkedPubPackage linkedPackage = linkedPackages 877 LinkedPubPackage linkedPackage = linkedPackages
861 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); 878 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa');
862 _assertHasLinkedVariable(linkedPackage, 'a', 'C', 879 _assertHasLinkedVariable(linkedPackage, 'a', 'C',
863 expectedTypeNameUri: 'package:ccc/c.dart'); 880 expectedTypeNameUri: 'package:ccc/c.dart');
864 } 881 }
865 } 882 }
866 883
867 test_getLinkedBundles_wrongScheme() async { 884 test_getLinkedBundles_wrongScheme() async {
868 resourceProvider.newFile( 885 newFile(
869 '$CACHE/aaa/lib/a.dart', 886 '$CACHE/aaa/lib/a.dart',
870 ''' 887 '''
871 import 'xxx:yyy/zzz.dart'; 888 import 'xxx:yyy/zzz.dart';
872 int a1; 889 int a1;
873 Z a2; 890 Z a2;
874 '''); 891 ''');
875 892
876 // Configure packages resolution. 893 // Configure packages resolution.
877 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 894 Folder libFolderA = newFolder('$CACHE/aaa/lib');
878 context.sourceFactory = new SourceFactory(<UriResolver>[ 895 context.sourceFactory = new SourceFactory(<UriResolver>[
879 sdkResolver, 896 sdkResolver,
880 resourceResolver, 897 resourceResolver,
881 new PackageMapUriResolver(resourceProvider, { 898 new PackageMapUriResolver(resourceProvider, {
882 'aaa': [libFolderA], 899 'aaa': [libFolderA],
883 }) 900 })
884 ]); 901 ]);
885 902
886 // Ensure unlinked bundles. 903 // Ensure unlinked bundles.
887 manager.getUnlinkedBundles(context); 904 manager.getUnlinkedBundles(context);
(...skipping 12 matching lines...) Expand all
900 } 917 }
901 918
902 expect(getPackageName('package:foo/bar.dart'), 'foo'); 919 expect(getPackageName('package:foo/bar.dart'), 'foo');
903 expect(getPackageName('package:foo/bar/baz.dart'), 'foo'); 920 expect(getPackageName('package:foo/bar/baz.dart'), 'foo');
904 expect(getPackageName('wrong:foo/bar.dart'), isNull); 921 expect(getPackageName('wrong:foo/bar.dart'), isNull);
905 expect(getPackageName('package:foo'), isNull); 922 expect(getPackageName('package:foo'), isNull);
906 } 923 }
907 924
908 test_getUnlinkedBundles() async { 925 test_getUnlinkedBundles() async {
909 // Create package files. 926 // Create package files.
910 resourceProvider.newFile( 927 newFile(
911 '$CACHE/aaa/lib/a.dart', 928 '$CACHE/aaa/lib/a.dart',
912 ''' 929 '''
913 class A {} 930 class A {}
914 '''); 931 ''');
915 resourceProvider.newFile( 932 newFile(
916 '$CACHE/aaa/lib/src/a2.dart', 933 '$CACHE/aaa/lib/src/a2.dart',
917 ''' 934 '''
918 class A2 {} 935 class A2 {}
919 '''); 936 ''');
920 resourceProvider.newFile( 937 newFile(
921 '$CACHE/bbb/lib/b.dart', 938 '$CACHE/bbb/lib/b.dart',
922 ''' 939 '''
923 class B {} 940 class B {}
924 '''); 941 ''');
925 942
926 // Configure packages resolution. 943 // Configure packages resolution.
927 Folder libFolderA = resourceProvider.newFolder('$CACHE/aaa/lib'); 944 Folder libFolderA = newFolder('$CACHE/aaa/lib');
928 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 945 Folder libFolderB = newFolder('$CACHE/bbb/lib');
929 context.sourceFactory = new SourceFactory(<UriResolver>[ 946 context.sourceFactory = new SourceFactory(<UriResolver>[
930 sdkResolver, 947 sdkResolver,
931 resourceResolver, 948 resourceResolver,
932 new PackageMapUriResolver(resourceProvider, { 949 new PackageMapUriResolver(resourceProvider, {
933 'aaa': [libFolderA], 950 'aaa': [libFolderA],
934 'bbb': [libFolderB], 951 'bbb': [libFolderB],
935 }) 952 })
936 ]); 953 ]);
937 954
938 // No unlinked bundles yet. 955 // No unlinked bundles yet.
(...skipping 29 matching lines...) Expand all
968 985
969 // The files must be created. 986 // The files must be created.
970 _assertFileExists(libFolderA.parent, PubSummaryManager.UNLINKED_NAME); 987 _assertFileExists(libFolderA.parent, PubSummaryManager.UNLINKED_NAME);
971 _assertFileExists(libFolderA.parent, PubSummaryManager.UNLINKED_SPEC_NAME); 988 _assertFileExists(libFolderA.parent, PubSummaryManager.UNLINKED_SPEC_NAME);
972 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_NAME); 989 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_NAME);
973 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_SPEC_NAME); 990 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_SPEC_NAME);
974 } 991 }
975 992
976 test_getUnlinkedBundles_inconsistent_majorVersion() async { 993 test_getUnlinkedBundles_inconsistent_majorVersion() async {
977 // Create package files. 994 // Create package files.
978 resourceProvider.newFile( 995 newFile(
979 '$CACHE/aaa/lib/a.dart', 996 '$CACHE/aaa/lib/a.dart',
980 ''' 997 '''
981 class A {} 998 class A {}
982 '''); 999 ''');
983 1000
984 // Configure packages resolution. 1001 // Configure packages resolution.
985 Folder libFolder = resourceProvider.newFolder('$CACHE/aaa/lib'); 1002 Folder libFolder = newFolder('$CACHE/aaa/lib');
986 context.sourceFactory = new SourceFactory(<UriResolver>[ 1003 context.sourceFactory = new SourceFactory(<UriResolver>[
987 sdkResolver, 1004 sdkResolver,
988 resourceResolver, 1005 resourceResolver,
989 new PackageMapUriResolver(resourceProvider, { 1006 new PackageMapUriResolver(resourceProvider, {
990 'aaa': [libFolder], 1007 'aaa': [libFolder],
991 }) 1008 })
992 ]); 1009 ]);
993 1010
994 /** 1011 /**
995 * Verify that the [manager] has exactly one cache bundle `aaa`. 1012 * Verify that the [manager] has exactly one cache bundle `aaa`.
(...skipping 23 matching lines...) Expand all
1019 _assertFileExists(libFolder.parent, PubSummaryManager.UNLINKED_SPEC_NAME); 1036 _assertFileExists(libFolder.parent, PubSummaryManager.UNLINKED_SPEC_NAME);
1020 1037
1021 // Can read from the file again. 1038 // Can read from the file again.
1022 _createManager(); 1039 _createManager();
1023 _assertSingleBundle(); 1040 _assertSingleBundle();
1024 } 1041 }
1025 1042
1026 test_getUnlinkedBundles_notPubCache_dontCreate() async { 1043 test_getUnlinkedBundles_notPubCache_dontCreate() async {
1027 String aaaPath = '/Users/user/projects/aaa'; 1044 String aaaPath = '/Users/user/projects/aaa';
1028 // Create package files. 1045 // Create package files.
1029 resourceProvider.newFile( 1046 newFile(
1030 '$aaaPath/lib/a.dart', 1047 '$aaaPath/lib/a.dart',
1031 ''' 1048 '''
1032 class A {} 1049 class A {}
1033 '''); 1050 ''');
1034 resourceProvider.newFile( 1051 newFile(
1035 '$CACHE/bbb/lib/b.dart', 1052 '$CACHE/bbb/lib/b.dart',
1036 ''' 1053 '''
1037 class B {} 1054 class B {}
1038 '''); 1055 ''');
1039 1056
1040 // Configure packages resolution. 1057 // Configure packages resolution.
1041 Folder libFolderA = resourceProvider.getFolder('$aaaPath/lib'); 1058 Folder libFolderA = getFolder('$aaaPath/lib');
1042 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 1059 Folder libFolderB = newFolder('$CACHE/bbb/lib');
1043 context.sourceFactory = new SourceFactory(<UriResolver>[ 1060 context.sourceFactory = new SourceFactory(<UriResolver>[
1044 sdkResolver, 1061 sdkResolver,
1045 resourceResolver, 1062 resourceResolver,
1046 new PackageMapUriResolver(resourceProvider, { 1063 new PackageMapUriResolver(resourceProvider, {
1047 'aaa': [libFolderA], 1064 'aaa': [libFolderA],
1048 'bbb': [libFolderB], 1065 'bbb': [libFolderB],
1049 }) 1066 })
1050 ]); 1067 ]);
1051 1068
1052 // No unlinked bundles initially. 1069 // No unlinked bundles initially.
(...skipping 20 matching lines...) Expand all
1073 1090
1074 // The files must be created. 1091 // The files must be created.
1075 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_NAME); 1092 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_NAME);
1076 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_SPEC_NAME); 1093 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_SPEC_NAME);
1077 } 1094 }
1078 1095
1079 test_getUnlinkedBundles_notPubCache_useExisting() async { 1096 test_getUnlinkedBundles_notPubCache_useExisting() async {
1080 String aaaPath = '/Users/user/projects/aaa'; 1097 String aaaPath = '/Users/user/projects/aaa';
1081 // Create package files. 1098 // Create package files.
1082 { 1099 {
1083 File file = resourceProvider.newFile( 1100 File file = newFile(
1084 '$aaaPath/lib/a.dart', 1101 '$aaaPath/lib/a.dart',
1085 ''' 1102 '''
1086 class A {} 1103 class A {}
1087 '''); 1104 ''');
1088 PackageBundleAssembler assembler = new PackageBundleAssembler() 1105 PackageBundleAssembler assembler = new PackageBundleAssembler()
1089 ..addUnlinkedUnit( 1106 ..addUnlinkedUnit(
1090 file.createSource(FastUri.parse('package:aaa/a.dart')), 1107 file.createSource(FastUri.parse('package:aaa/a.dart')),
1091 new UnlinkedUnitBuilder()); 1108 new UnlinkedUnitBuilder());
1092 resourceProvider.newFileWithBytes( 1109 resourceProvider.newFileWithBytes(
1093 '$aaaPath/${PubSummaryManager.UNLINKED_SPEC_NAME}', 1110 resourceProvider
1111 .convertPath('$aaaPath/${PubSummaryManager.UNLINKED_SPEC_NAME}'),
1094 assembler.assemble().toBuffer()); 1112 assembler.assemble().toBuffer());
1095 } 1113 }
1096 resourceProvider.newFile( 1114 newFile(
1097 '$CACHE/bbb/lib/b.dart', 1115 '$CACHE/bbb/lib/b.dart',
1098 ''' 1116 '''
1099 class B {} 1117 class B {}
1100 '''); 1118 ''');
1101 1119
1102 // Configure packages resolution. 1120 // Configure packages resolution.
1103 Folder libFolderA = resourceProvider.getFolder('$aaaPath/lib'); 1121 Folder libFolderA = getFolder('$aaaPath/lib');
1104 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); 1122 Folder libFolderB = newFolder('$CACHE/bbb/lib');
1105 context.sourceFactory = new SourceFactory(<UriResolver>[ 1123 context.sourceFactory = new SourceFactory(<UriResolver>[
1106 sdkResolver, 1124 sdkResolver,
1107 resourceResolver, 1125 resourceResolver,
1108 new PackageMapUriResolver(resourceProvider, { 1126 new PackageMapUriResolver(resourceProvider, {
1109 'aaa': [libFolderA], 1127 'aaa': [libFolderA],
1110 'bbb': [libFolderB], 1128 'bbb': [libFolderB],
1111 }) 1129 })
1112 ]); 1130 ]);
1113 1131
1114 // Request already available unlinked bundles. 1132 // Request already available unlinked bundles.
(...skipping 28 matching lines...) Expand all
1143 } 1161 }
1144 1162
1145 // The files must be created. 1163 // The files must be created.
1146 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_NAME); 1164 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_NAME);
1147 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_SPEC_NAME); 1165 _assertFileExists(libFolderB.parent, PubSummaryManager.UNLINKED_SPEC_NAME);
1148 } 1166 }
1149 1167
1150 test_getUnlinkedBundles_notPubCache_useExisting_inconsistent() async { 1168 test_getUnlinkedBundles_notPubCache_useExisting_inconsistent() async {
1151 String aaaPath = '/Users/user/projects/aaa'; 1169 String aaaPath = '/Users/user/projects/aaa';
1152 // Create package files. 1170 // Create package files.
1153 resourceProvider.newFile( 1171 newFile(
1154 '$aaaPath/lib/a.dart', 1172 '$aaaPath/lib/a.dart',
1155 ''' 1173 '''
1156 class A {} 1174 class A {}
1157 '''); 1175 ''');
1158 1176
1159 // Compute the bundles. 1177 // Compute the bundles.
1160 Folder libFolderA = resourceProvider.getFolder('$aaaPath/lib'); 1178 Folder libFolderA = getFolder('$aaaPath/lib');
1161 await new PubSummaryManager(resourceProvider, '_.temp') 1179 await new PubSummaryManager(resourceProvider, '_.temp')
1162 .computeUnlinkedForFolder('aaa', libFolderA); 1180 .computeUnlinkedForFolder('aaa', libFolderA);
1163 1181
1164 // Configure packages resolution. 1182 // Configure packages resolution.
1165 context.sourceFactory = new SourceFactory(<UriResolver>[ 1183 context.sourceFactory = new SourceFactory(<UriResolver>[
1166 sdkResolver, 1184 sdkResolver,
1167 resourceResolver, 1185 resourceResolver,
1168 new PackageMapUriResolver(resourceProvider, { 1186 new PackageMapUriResolver(resourceProvider, {
1169 'aaa': [libFolderA], 1187 'aaa': [libFolderA],
1170 }) 1188 })
1171 ]); 1189 ]);
1172 1190
1173 // Request already available unlinked bundles. 1191 // Request already available unlinked bundles.
1174 expect(manager.getUnlinkedBundles(context), hasLength(1)); 1192 expect(manager.getUnlinkedBundles(context), hasLength(1));
1175 1193
1176 // Update a Dart file. 1194 // Update a Dart file.
1177 // So, the cached bundle cannot be reused. 1195 // So, the cached bundle cannot be reused.
1178 resourceProvider.updateFile( 1196 resourceProvider.updateFile(
1179 '$aaaPath/lib/a.dart', 1197 resourceProvider.convertPath('$aaaPath/lib/a.dart'),
1180 ''' 1198 '''
1181 class A2 {} 1199 class A2 {}
1182 '''); 1200 ''');
1183 _createManager(); 1201 _createManager();
1184 expect(manager.getUnlinkedBundles(context), isEmpty); 1202 expect(manager.getUnlinkedBundles(context), isEmpty);
1185 1203
1186 // ...and because it is not in the pub cache, it will not be recomputed. 1204 // ...and because it is not in the pub cache, it will not be recomputed.
1187 await manager.onUnlinkedComplete; 1205 await manager.onUnlinkedComplete;
1188 expect(manager.getUnlinkedBundles(context), isEmpty); 1206 expect(manager.getUnlinkedBundles(context), isEmpty);
1189 } 1207 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1274 1292
1275 LinkedPubPackage _getLinkedPackage( 1293 LinkedPubPackage _getLinkedPackage(
1276 List<LinkedPubPackage> packages, String name) { 1294 List<LinkedPubPackage> packages, String name) {
1277 return packages 1295 return packages
1278 .singleWhere((linkedPackage) => linkedPackage.package.name == name); 1296 .singleWhere((linkedPackage) => linkedPackage.package.name == name);
1279 } 1297 }
1280 1298
1281 _testImpl_getLinkedBundles_cached_declaredVariables( 1299 _testImpl_getLinkedBundles_cached_declaredVariables(
1282 String importOrExport) async { 1300 String importOrExport) async {
1283 String pathA = '$CACHE/aaa/lib'; 1301 String pathA = '$CACHE/aaa/lib';
1284 resourceProvider.newFile('$pathA/foo.dart', 'class A {}'); 1302 newFile('$pathA/foo.dart', 'class A {}');
1285 resourceProvider.newFile('$pathA/foo_io.dart', 'class A {}'); 1303 newFile('$pathA/foo_io.dart', 'class A {}');
1286 resourceProvider.newFile('$pathA/foo_html.dart', 'class A {}'); 1304 newFile('$pathA/foo_html.dart', 'class A {}');
1287 resourceProvider.newFile( 1305 newFile(
1288 '$pathA/user.dart', 1306 '$pathA/user.dart',
1289 ''' 1307 '''
1290 $importOrExport 'foo.dart' 1308 $importOrExport 'foo.dart'
1291 if (dart.library.io) 'foo_io.dart' 1309 if (dart.library.io) 'foo_io.dart'
1292 if (dart.library.html) 'foo_html.dart'; 1310 if (dart.library.html) 'foo_html.dart';
1293 '''); 1311 ''');
1294 // Configure packages resolution. 1312 // Configure packages resolution.
1295 Folder libFolderA = resourceProvider.newFolder(pathA); 1313 Folder libFolderA = newFolder(pathA);
1296 context.sourceFactory = new SourceFactory(<UriResolver>[ 1314 context.sourceFactory = new SourceFactory(<UriResolver>[
1297 sdkResolver, 1315 sdkResolver,
1298 resourceResolver, 1316 resourceResolver,
1299 new PackageMapUriResolver(resourceProvider, { 1317 new PackageMapUriResolver(resourceProvider, {
1300 'aaa': [libFolderA], 1318 'aaa': [libFolderA],
1301 }) 1319 })
1302 ]); 1320 ]);
1303 1321
1304 void _assertDependencyInUser(PackageBundle bundle, String shortName) { 1322 void _assertDependencyInUser(PackageBundle bundle, String shortName) {
1305 for (var i = 0; i < bundle.linkedLibraryUris.length; i++) { 1323 for (var i = 0; i < bundle.linkedLibraryUris.length; i++) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1359 } 1377 }
1360 } 1378 }
1361 1379
1362 static PackageBundle _getBundleByPackageName( 1380 static PackageBundle _getBundleByPackageName(
1363 Map<PubPackage, PackageBundle> bundles, String name) { 1381 Map<PubPackage, PackageBundle> bundles, String name) {
1364 PubPackage package = 1382 PubPackage package =
1365 bundles.keys.singleWhere((package) => package.name == name); 1383 bundles.keys.singleWhere((package) => package.name == name);
1366 return bundles[package]; 1384 return bundles[package];
1367 } 1385 }
1368 } 1386 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/summary/bazel_summary_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698