| OLD | NEW |
| 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/dart/element/element.dart'; | |
| 6 import 'package:analyzer/file_system/file_system.dart'; | 5 import 'package:analyzer/file_system/file_system.dart'; |
| 7 import 'package:analyzer/source/package_map_resolver.dart'; | 6 import 'package:analyzer/source/package_map_resolver.dart'; |
| 8 import 'package:analyzer/src/generated/sdk.dart'; | |
| 9 import 'package:analyzer/src/generated/source.dart'; | 7 import 'package:analyzer/src/generated/source.dart'; |
| 10 import 'package:analyzer/src/summary/format.dart'; | 8 import 'package:analyzer/src/summary/format.dart'; |
| 11 import 'package:analyzer/src/summary/idl.dart'; | 9 import 'package:analyzer/src/summary/idl.dart'; |
| 12 import 'package:analyzer/src/summary/pub_summary.dart'; | 10 import 'package:analyzer/src/summary/pub_summary.dart'; |
| 13 import 'package:analyzer/src/summary/summarize_elements.dart'; | 11 import 'package:analyzer/src/summary/summarize_elements.dart'; |
| 14 import 'package:analyzer/src/util/fast_uri.dart'; | 12 import 'package:analyzer/src/util/fast_uri.dart'; |
| 15 import 'package:path/path.dart' as pathos; | 13 import 'package:path/path.dart' as pathos; |
| 16 import 'package:unittest/unittest.dart' hide ERROR; | 14 import 'package:unittest/unittest.dart' hide ERROR; |
| 17 | 15 |
| 18 import '../../reflective_tests.dart'; | 16 import '../../reflective_tests.dart'; |
| 19 import '../../utils.dart'; | 17 import '../../utils.dart'; |
| 20 import '../context/abstract_context.dart'; | 18 import '../context/abstract_context.dart'; |
| 21 | 19 |
| 22 main() { | 20 main() { |
| 23 initializeTestEnvironment(); | 21 initializeTestEnvironment(); |
| 24 runReflectiveTests(PubSummaryManagerTest); | 22 runReflectiveTests(PubSummaryManagerTest); |
| 25 } | 23 } |
| 26 | 24 |
| 27 @reflectiveTest | 25 @reflectiveTest |
| 28 class PubSummaryManagerTest extends AbstractContextTest { | 26 class PubSummaryManagerTest extends AbstractContextTest { |
| 29 static const String CACHE = '/home/.pub-cache/hosted/pub.dartlang.org'; | 27 static const String CACHE = '/home/.pub-cache/hosted/pub.dartlang.org'; |
| 30 | 28 |
| 31 static Map<DartSdk, PackageBundle> sdkBundleMap = <DartSdk, PackageBundle>{}; | |
| 32 | |
| 33 PubSummaryManager manager; | 29 PubSummaryManager manager; |
| 34 | 30 |
| 35 void setUp() { | 31 void setUp() { |
| 36 super.setUp(); | 32 super.setUp(); |
| 37 manager = new PubSummaryManager(resourceProvider, '_.temp'); | 33 manager = new PubSummaryManager(resourceProvider, '_.temp'); |
| 38 } | 34 } |
| 39 | 35 |
| 40 test_computeSdkExtension() async { | 36 test_computeSdkExtension() async { |
| 41 // Create package files. | 37 // Create package files. |
| 42 resourceProvider.newFile( | 38 resourceProvider.newFile( |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); | 82 Folder libFolderB = resourceProvider.newFolder('$CACHE/bbb/lib'); |
| 87 context.sourceFactory = new SourceFactory(<UriResolver>[ | 83 context.sourceFactory = new SourceFactory(<UriResolver>[ |
| 88 sdkResolver, | 84 sdkResolver, |
| 89 resourceResolver, | 85 resourceResolver, |
| 90 new PackageMapUriResolver(resourceProvider, { | 86 new PackageMapUriResolver(resourceProvider, { |
| 91 'aaa': [libFolderA], | 87 'aaa': [libFolderA], |
| 92 'bbb': [libFolderB], | 88 'bbb': [libFolderB], |
| 93 }) | 89 }) |
| 94 ]); | 90 ]); |
| 95 | 91 |
| 96 PackageBundle sdkBundle = getSdkBundle(sdk); | 92 PackageBundle sdkBundle = sdk.getLinkedBundle(); |
| 97 PackageBundle bundle = manager.computeSdkExtension(context, sdkBundle); | 93 PackageBundle bundle = manager.computeSdkExtension(context, sdkBundle); |
| 98 expect(bundle, isNotNull); | 94 expect(bundle, isNotNull); |
| 99 expect(bundle.linkedLibraryUris, ['dart:aaa.internal']); | 95 expect(bundle.linkedLibraryUris, ['dart:aaa.internal']); |
| 100 expect(bundle.unlinkedUnitUris, [ | 96 expect(bundle.unlinkedUnitUris, [ |
| 101 'dart:aaa.internal', | 97 'dart:aaa.internal', |
| 102 'dart:aaa.internal/src/p1.dart', | 98 'dart:aaa.internal/src/p1.dart', |
| 103 'dart:aaa.internal/src/p2.dart' | 99 'dart:aaa.internal/src/p2.dart' |
| 104 ]); | 100 ]); |
| 105 expect(bundle.unlinkedUnits, hasLength(3)); | 101 expect(bundle.unlinkedUnits, hasLength(3)); |
| 106 expect(bundle.unlinkedUnits[0].classes.map((c) => c.name), ['ExtA']); | 102 expect(bundle.unlinkedUnits[0].classes.map((c) => c.name), ['ExtA']); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 'ccc': [libFolderC], | 192 'ccc': [libFolderC], |
| 197 'ddd': [libFolderD], | 193 'ddd': [libFolderD], |
| 198 }) | 194 }) |
| 199 ]); | 195 ]); |
| 200 | 196 |
| 201 // Ensure unlinked bundles. | 197 // Ensure unlinked bundles. |
| 202 manager.getUnlinkedBundles(context); | 198 manager.getUnlinkedBundles(context); |
| 203 await manager.onUnlinkedComplete; | 199 await manager.onUnlinkedComplete; |
| 204 | 200 |
| 205 // Now we should be able to get linked bundles. | 201 // Now we should be able to get linked bundles. |
| 206 PackageBundle sdkBundle = getSdkBundle(sdk); | 202 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); |
| 207 List<LinkedPubPackage> linkedPackages = | |
| 208 manager.getLinkedBundles(context, sdkBundle); | |
| 209 expect(linkedPackages, hasLength(4)); | 203 expect(linkedPackages, hasLength(4)); |
| 210 | 204 |
| 211 // package:aaa | 205 // package:aaa |
| 212 { | 206 { |
| 213 LinkedPubPackage linkedPackage = linkedPackages | 207 LinkedPubPackage linkedPackage = linkedPackages |
| 214 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); | 208 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); |
| 215 expect(linkedPackage.linked.linkedLibraryUris, ['package:aaa/a.dart']); | 209 expect(linkedPackage.linked.linkedLibraryUris, ['package:aaa/a.dart']); |
| 216 _assertHasLinkedVariable(linkedPackage, 'a1', 'int', 'dart:core'); | 210 _assertHasLinkedVariable(linkedPackage, 'a1', 'int', 'dart:core'); |
| 217 _assertHasLinkedVariable(linkedPackage, 'a2', 'B', 'package:bbb/b.dart'); | 211 _assertHasLinkedVariable(linkedPackage, 'a2', 'B', 'package:bbb/b.dart'); |
| 218 } | 212 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 'bbb': [libFolderB], | 261 'bbb': [libFolderB], |
| 268 }) | 262 }) |
| 269 ]); | 263 ]); |
| 270 | 264 |
| 271 // Ensure unlinked bundles. | 265 // Ensure unlinked bundles. |
| 272 manager.getUnlinkedBundles(context); | 266 manager.getUnlinkedBundles(context); |
| 273 await manager.onUnlinkedComplete; | 267 await manager.onUnlinkedComplete; |
| 274 | 268 |
| 275 // Try to link. | 269 // Try to link. |
| 276 // Only 'aaa' can be linked, because 'bbb' references not available 'ccc'. | 270 // Only 'aaa' can be linked, because 'bbb' references not available 'ccc'. |
| 277 PackageBundle sdkBundle = getSdkBundle(sdk); | 271 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); |
| 278 List<LinkedPubPackage> linkedPackages = | |
| 279 manager.getLinkedBundles(context, sdkBundle); | |
| 280 expect(linkedPackages, hasLength(1)); | 272 expect(linkedPackages, hasLength(1)); |
| 281 | 273 |
| 282 // package:aaa | 274 // package:aaa |
| 283 { | 275 { |
| 284 LinkedPubPackage linkedPackage = linkedPackages | 276 LinkedPubPackage linkedPackage = linkedPackages |
| 285 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); | 277 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); |
| 286 _assertHasLinkedVariable(linkedPackage, 'a', 'int', 'dart:core'); | 278 _assertHasLinkedVariable(linkedPackage, 'a', 'int', 'dart:core'); |
| 287 } | 279 } |
| 288 } | 280 } |
| 289 | 281 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 313 }) | 305 }) |
| 314 ]); | 306 ]); |
| 315 | 307 |
| 316 // Ensure unlinked bundles. | 308 // Ensure unlinked bundles. |
| 317 manager.getUnlinkedBundles(context); | 309 manager.getUnlinkedBundles(context); |
| 318 await manager.onUnlinkedComplete; | 310 await manager.onUnlinkedComplete; |
| 319 | 311 |
| 320 // Try to link. | 312 // Try to link. |
| 321 // No linked libraries, because 'aaa' needs 'bbb', and 'bbb' needs 'ccc'. | 313 // No linked libraries, because 'aaa' needs 'bbb', and 'bbb' needs 'ccc'. |
| 322 // But 'ccc' is not available, so the whole chain cannot be linked. | 314 // But 'ccc' is not available, so the whole chain cannot be linked. |
| 323 PackageBundle sdkBundle = getSdkBundle(sdk); | 315 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); |
| 324 List<LinkedPubPackage> linkedPackages = | |
| 325 manager.getLinkedBundles(context, sdkBundle); | |
| 326 expect(linkedPackages, isEmpty); | 316 expect(linkedPackages, isEmpty); |
| 327 } | 317 } |
| 328 | 318 |
| 329 test_getLinkedBundles_missingLibrary() async { | 319 test_getLinkedBundles_missingLibrary() async { |
| 330 resourceProvider.newFile( | 320 resourceProvider.newFile( |
| 331 '$CACHE/aaa/lib/a.dart', | 321 '$CACHE/aaa/lib/a.dart', |
| 332 ''' | 322 ''' |
| 333 import 'package:bbb/b2.dart'; | 323 import 'package:bbb/b2.dart'; |
| 334 int a; | 324 int a; |
| 335 '''); | 325 '''); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 352 }) | 342 }) |
| 353 ]); | 343 ]); |
| 354 | 344 |
| 355 // Ensure unlinked bundles. | 345 // Ensure unlinked bundles. |
| 356 manager.getUnlinkedBundles(context); | 346 manager.getUnlinkedBundles(context); |
| 357 await manager.onUnlinkedComplete; | 347 await manager.onUnlinkedComplete; |
| 358 | 348 |
| 359 // Try to link. | 349 // Try to link. |
| 360 // Only 'bbb', because 'aaa' references 'package:bbb/b2.dart', which does | 350 // Only 'bbb', because 'aaa' references 'package:bbb/b2.dart', which does |
| 361 // not exist in the bundle 'bbb'. | 351 // not exist in the bundle 'bbb'. |
| 362 PackageBundle sdkBundle = getSdkBundle(sdk); | 352 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); |
| 363 List<LinkedPubPackage> linkedPackages = | |
| 364 manager.getLinkedBundles(context, sdkBundle); | |
| 365 expect(linkedPackages, hasLength(1)); | 353 expect(linkedPackages, hasLength(1)); |
| 366 | 354 |
| 367 // package:bbb | 355 // package:bbb |
| 368 { | 356 { |
| 369 LinkedPubPackage linkedPackage = linkedPackages | 357 LinkedPubPackage linkedPackage = linkedPackages |
| 370 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb'); | 358 .singleWhere((linkedPackage) => linkedPackage.package.name == 'bbb'); |
| 371 _assertHasLinkedVariable(linkedPackage, 'b', 'int', 'dart:core'); | 359 _assertHasLinkedVariable(linkedPackage, 'b', 'int', 'dart:core'); |
| 372 } | 360 } |
| 373 } | 361 } |
| 374 | 362 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 ]); | 397 ]); |
| 410 | 398 |
| 411 // Ensure unlinked bundles. | 399 // Ensure unlinked bundles. |
| 412 manager.getUnlinkedBundles(context); | 400 manager.getUnlinkedBundles(context); |
| 413 await manager.onUnlinkedComplete; | 401 await manager.onUnlinkedComplete; |
| 414 | 402 |
| 415 // Try to link. | 403 // Try to link. |
| 416 // Only 'ccc' is linked. | 404 // Only 'ccc' is linked. |
| 417 // The 'aaa' + 'bbb' cycle cannot be linked because 'bbb' references | 405 // The 'aaa' + 'bbb' cycle cannot be linked because 'bbb' references |
| 418 // 'package:ccc/c2.dart', which does not exist in the bundle 'ccc'. | 406 // 'package:ccc/c2.dart', which does not exist in the bundle 'ccc'. |
| 419 PackageBundle sdkBundle = getSdkBundle(sdk); | 407 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); |
| 420 List<LinkedPubPackage> linkedPackages = | |
| 421 manager.getLinkedBundles(context, sdkBundle); | |
| 422 expect(linkedPackages, hasLength(1)); | 408 expect(linkedPackages, hasLength(1)); |
| 423 | 409 |
| 424 // package:ccc | 410 // package:ccc |
| 425 { | 411 { |
| 426 LinkedPubPackage linkedPackage = linkedPackages | 412 LinkedPubPackage linkedPackage = linkedPackages |
| 427 .singleWhere((linkedPackage) => linkedPackage.package.name == 'ccc'); | 413 .singleWhere((linkedPackage) => linkedPackage.package.name == 'ccc'); |
| 428 _assertHasLinkedVariable(linkedPackage, 'c', 'int', 'dart:core'); | 414 _assertHasLinkedVariable(linkedPackage, 'c', 'int', 'dart:core'); |
| 429 } | 415 } |
| 430 } | 416 } |
| 431 | 417 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 453 'aaa': [libFolderA], | 439 'aaa': [libFolderA], |
| 454 'bbb': [libFolderB], | 440 'bbb': [libFolderB], |
| 455 }) | 441 }) |
| 456 ]); | 442 ]); |
| 457 | 443 |
| 458 // Ensure unlinked bundles. | 444 // Ensure unlinked bundles. |
| 459 manager.getUnlinkedBundles(context); | 445 manager.getUnlinkedBundles(context); |
| 460 await manager.onUnlinkedComplete; | 446 await manager.onUnlinkedComplete; |
| 461 | 447 |
| 462 // Now we should be able to get linked bundles. | 448 // Now we should be able to get linked bundles. |
| 463 PackageBundle sdkBundle = getSdkBundle(sdk); | 449 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); |
| 464 List<LinkedPubPackage> linkedPackages = | |
| 465 manager.getLinkedBundles(context, sdkBundle); | |
| 466 expect(linkedPackages, hasLength(2)); | 450 expect(linkedPackages, hasLength(2)); |
| 467 | 451 |
| 468 // package:aaa | 452 // package:aaa |
| 469 { | 453 { |
| 470 LinkedPubPackage linkedPackage = linkedPackages | 454 LinkedPubPackage linkedPackage = linkedPackages |
| 471 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); | 455 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); |
| 472 _assertHasLinkedVariable(linkedPackage, 'a', 'int', 'dart:core'); | 456 _assertHasLinkedVariable(linkedPackage, 'a', 'int', 'dart:core'); |
| 473 } | 457 } |
| 474 | 458 |
| 475 // package:bbb | 459 // package:bbb |
| (...skipping 25 matching lines...) Expand all Loading... |
| 501 new PackageMapUriResolver(resourceProvider, { | 485 new PackageMapUriResolver(resourceProvider, { |
| 502 'aaa': [libFolderA], | 486 'aaa': [libFolderA], |
| 503 }) | 487 }) |
| 504 ]); | 488 ]); |
| 505 | 489 |
| 506 // Ensure unlinked bundles. | 490 // Ensure unlinked bundles. |
| 507 manager.getUnlinkedBundles(context); | 491 manager.getUnlinkedBundles(context); |
| 508 await manager.onUnlinkedComplete; | 492 await manager.onUnlinkedComplete; |
| 509 | 493 |
| 510 // Link. | 494 // Link. |
| 511 PackageBundle sdkBundle = getSdkBundle(sdk); | 495 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); |
| 512 List<LinkedPubPackage> linkedPackages = | |
| 513 manager.getLinkedBundles(context, sdkBundle); | |
| 514 expect(linkedPackages, hasLength(1)); | 496 expect(linkedPackages, hasLength(1)); |
| 515 | 497 |
| 516 // package:aaa | 498 // package:aaa |
| 517 { | 499 { |
| 518 LinkedPubPackage linkedPackage = linkedPackages | 500 LinkedPubPackage linkedPackage = linkedPackages |
| 519 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); | 501 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); |
| 520 _assertHasLinkedVariable(linkedPackage, 'a', 'A', 'src/a2.dart'); | 502 _assertHasLinkedVariable(linkedPackage, 'a', 'A', 'src/a2.dart'); |
| 521 } | 503 } |
| 522 } | 504 } |
| 523 | 505 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 551 'bbb': [libFolderB], | 533 'bbb': [libFolderB], |
| 552 'ccc': [libFolderC], | 534 'ccc': [libFolderC], |
| 553 }) | 535 }) |
| 554 ]); | 536 ]); |
| 555 | 537 |
| 556 // Ensure unlinked bundles. | 538 // Ensure unlinked bundles. |
| 557 manager.getUnlinkedBundles(context); | 539 manager.getUnlinkedBundles(context); |
| 558 await manager.onUnlinkedComplete; | 540 await manager.onUnlinkedComplete; |
| 559 | 541 |
| 560 // Now we should be able to get linked bundles. | 542 // Now we should be able to get linked bundles. |
| 561 PackageBundle sdkBundle = getSdkBundle(sdk); | 543 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); |
| 562 List<LinkedPubPackage> linkedPackages = | |
| 563 manager.getLinkedBundles(context, sdkBundle); | |
| 564 expect(linkedPackages, hasLength(3)); | 544 expect(linkedPackages, hasLength(3)); |
| 565 | 545 |
| 566 // package:aaa | 546 // package:aaa |
| 567 { | 547 { |
| 568 LinkedPubPackage linkedPackage = linkedPackages | 548 LinkedPubPackage linkedPackage = linkedPackages |
| 569 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); | 549 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); |
| 570 _assertHasLinkedVariable(linkedPackage, 'a', 'C', 'package:ccc/c.dart'); | 550 _assertHasLinkedVariable(linkedPackage, 'a', 'C', 'package:ccc/c.dart'); |
| 571 } | 551 } |
| 572 } | 552 } |
| 573 | 553 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 607 'aaa': [libFolderA], | 587 'aaa': [libFolderA], |
| 608 'bbb': [libFolderB], | 588 'bbb': [libFolderB], |
| 609 }) | 589 }) |
| 610 ]); | 590 ]); |
| 611 | 591 |
| 612 // Ensure unlinked bundles. | 592 // Ensure unlinked bundles. |
| 613 manager.getUnlinkedBundles(context); | 593 manager.getUnlinkedBundles(context); |
| 614 await manager.onUnlinkedComplete; | 594 await manager.onUnlinkedComplete; |
| 615 | 595 |
| 616 // Now we should be able to get linked bundles. | 596 // Now we should be able to get linked bundles. |
| 617 PackageBundle sdkBundle = getSdkBundle(sdk); | 597 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); |
| 618 List<LinkedPubPackage> linkedPackages = | |
| 619 manager.getLinkedBundles(context, sdkBundle); | |
| 620 expect(linkedPackages, hasLength(2)); | 598 expect(linkedPackages, hasLength(2)); |
| 621 | 599 |
| 622 // package:aaa | 600 // package:aaa |
| 623 { | 601 { |
| 624 LinkedPubPackage linkedPackage = linkedPackages | 602 LinkedPubPackage linkedPackage = linkedPackages |
| 625 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); | 603 .singleWhere((linkedPackage) => linkedPackage.package.name == 'aaa'); |
| 626 _assertHasLinkedVariable(linkedPackage, 'a', 'ExtB', 'dart:bbb'); | 604 _assertHasLinkedVariable(linkedPackage, 'a', 'ExtB', 'dart:bbb'); |
| 627 } | 605 } |
| 628 | 606 |
| 629 // package:bbb | 607 // package:bbb |
| (...skipping 22 matching lines...) Expand all Loading... |
| 652 }) | 630 }) |
| 653 ]); | 631 ]); |
| 654 | 632 |
| 655 // Ensure unlinked bundles. | 633 // Ensure unlinked bundles. |
| 656 manager.getUnlinkedBundles(context); | 634 manager.getUnlinkedBundles(context); |
| 657 await manager.onUnlinkedComplete; | 635 await manager.onUnlinkedComplete; |
| 658 | 636 |
| 659 // Try to link. | 637 // Try to link. |
| 660 // The package 'aaa' cannot be linked because it uses not 'dart' or | 638 // The package 'aaa' cannot be linked because it uses not 'dart' or |
| 661 // 'package' import URI scheme. | 639 // 'package' import URI scheme. |
| 662 PackageBundle sdkBundle = getSdkBundle(sdk); | 640 List<LinkedPubPackage> linkedPackages = manager.getLinkedBundles(context); |
| 663 List<LinkedPubPackage> linkedPackages = | |
| 664 manager.getLinkedBundles(context, sdkBundle); | |
| 665 expect(linkedPackages, hasLength(0)); | 641 expect(linkedPackages, hasLength(0)); |
| 666 } | 642 } |
| 667 | 643 |
| 668 test_getPackageName() { | 644 test_getPackageName() { |
| 669 String getPackageName(String uriStr) { | 645 String getPackageName(String uriStr) { |
| 670 return PubSummaryManager.getPackageName(uriStr); | 646 return PubSummaryManager.getPackageName(uriStr); |
| 671 } | 647 } |
| 672 expect(getPackageName('package:foo/bar.dart'), 'foo'); | 648 expect(getPackageName('package:foo/bar.dart'), 'foo'); |
| 673 expect(getPackageName('package:foo/bar/baz.dart'), 'foo'); | 649 expect(getPackageName('package:foo/bar/baz.dart'), 'foo'); |
| 674 expect(getPackageName('wrong:foo/bar.dart'), isNull); | 650 expect(getPackageName('wrong:foo/bar.dart'), isNull); |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 934 return; | 910 return; |
| 935 } | 911 } |
| 936 } | 912 } |
| 937 fail('Cannot find linked unit for $variableName in $linkedPackage'); | 913 fail('Cannot find linked unit for $variableName in $linkedPackage'); |
| 938 } | 914 } |
| 939 } | 915 } |
| 940 } | 916 } |
| 941 fail('Cannot find variable $variableName in $linkedPackage'); | 917 fail('Cannot find variable $variableName in $linkedPackage'); |
| 942 } | 918 } |
| 943 | 919 |
| 944 /** | |
| 945 * Compute element based summary bundle for the given [sdk]. | |
| 946 */ | |
| 947 static PackageBundle getSdkBundle(DartSdk sdk) { | |
| 948 return sdkBundleMap.putIfAbsent(sdk, () { | |
| 949 PackageBundleAssembler assembler = new PackageBundleAssembler(); | |
| 950 for (SdkLibrary sdkLibrary in sdk.sdkLibraries) { | |
| 951 String uriStr = sdkLibrary.shortName; | |
| 952 Source source = sdk.mapDartUri(uriStr); | |
| 953 LibraryElement libraryElement = | |
| 954 sdk.context.computeLibraryElement(source); | |
| 955 assembler.serializeLibraryElement(libraryElement); | |
| 956 } | |
| 957 List<int> bytes = assembler.assemble().toBuffer(); | |
| 958 return new PackageBundle.fromBuffer(bytes); | |
| 959 }); | |
| 960 } | |
| 961 | |
| 962 static PackageBundle _getBundleByPackageName( | 920 static PackageBundle _getBundleByPackageName( |
| 963 Map<PubPackage, PackageBundle> bundles, String name) { | 921 Map<PubPackage, PackageBundle> bundles, String name) { |
| 964 PubPackage package = | 922 PubPackage package = |
| 965 bundles.keys.singleWhere((package) => package.name == name); | 923 bundles.keys.singleWhere((package) => package.name == name); |
| 966 return bundles[package]; | 924 return bundles[package]; |
| 967 } | 925 } |
| 968 } | 926 } |
| OLD | NEW |