Index: pkg/analyzer/test/src/summary/bazel_summary_test.dart |
diff --git a/pkg/analyzer/test/src/summary/bazel_summary_test.dart b/pkg/analyzer/test/src/summary/bazel_summary_test.dart |
index 1f078052ad91e2a107649e3cf6b40d7f33ef9cff..6aee81202d4b3a565eefa85c8daac8ea25c9e999 100644 |
--- a/pkg/analyzer/test/src/summary/bazel_summary_test.dart |
+++ b/pkg/analyzer/test/src/summary/bazel_summary_test.dart |
@@ -49,6 +49,143 @@ class SummaryProviderTest extends AbstractContextTest { |
manager = new SummaryProvider(resourceProvider, _getOutputFolder, context); |
} |
+ test_getLinkedPackages_null_missingBundle() { |
+ _setComponentFile('aaa', 'a.dart', 'class A {}'); |
+ // We don't write 'aaa', so we cannot get its package. |
+ // Ask the package for the URI. |
+ Source source = _resolveUri('package:components.aaa/a.dart'); |
+ List<Package> packages = manager.getLinkedPackages(source); |
+ expect(packages, isNull); |
+ } |
+ |
+ test_getLinkedPackages_null_missingDirectDependency() { |
+ _setComponentFile('aaa', 'a.dart', 'class A {}'); |
+ _setComponentFile( |
+ 'bbb', |
+ 'b.dart', |
+ r''' |
+import 'package:components.aaa/a.dart'; |
+class B extends A {} |
+'''); |
+ _writeUnlinkedBundle('components.bbb'); |
+ // We cannot find 'aaa' bundle, so 'bbb' linking fails. |
+ Source source = _resolveUri('package:components.bbb/b.dart'); |
+ List<Package> packages = manager.getLinkedPackages(source); |
+ expect(packages, isNull); |
+ } |
+ |
+ test_getLinkedPackages_null_missingIndirectDependency() { |
+ _setComponentFile('aaa', 'a.dart', 'class A {}'); |
+ _setComponentFile( |
+ 'bbb', |
+ 'b.dart', |
+ r''' |
+import 'package:components.aaa/a.dart'; |
+class B extends A {} |
+'''); |
+ _setComponentFile( |
+ 'ccc', |
+ 'c.dart', |
+ r''' |
+import 'package:components.bbb/b.dart'; |
+class C extends B {} |
+'''); |
+ _writeUnlinkedBundle('components.bbb'); |
+ _writeUnlinkedBundle('components.ccc'); |
+ // We cannot find 'aaa' bundle, so 'ccc' linking fails. |
+ Source source = _resolveUri('package:components.ccc/c.dart'); |
+ List<Package> packages = manager.getLinkedPackages(source); |
+ expect(packages, isNull); |
+ } |
+ |
+ test_getLinkedPackages_withDependency_export() { |
+ _setComponentFile('aaa', 'a.dart', 'class A {}'); |
+ _setComponentFile( |
+ 'bbb', |
+ 'b.dart', |
+ r''' |
+export 'package:components.aaa/a.dart'; |
+'''); |
+ _writeUnlinkedBundle('components.aaa'); |
+ _writeUnlinkedBundle('components.bbb'); |
+ Source source = _resolveUri('package:components.bbb/b.dart'); |
+ List<Package> packages = manager.getLinkedPackages(source); |
+ expect(packages, hasLength(2)); |
+ } |
+ |
+ test_getLinkedPackages_withDependency_import() { |
+ _setComponentFile('aaa', 'a.dart', 'class A {}'); |
+ _setComponentFile( |
+ 'bbb', |
+ 'b.dart', |
+ r''' |
+import 'package:components.aaa/a.dart'; |
+class B extends A {} |
+'''); |
+ _writeUnlinkedBundle('components.aaa'); |
+ _writeUnlinkedBundle('components.bbb'); |
+ Source source = _resolveUri('package:components.bbb/b.dart'); |
+ List<Package> packages = manager.getLinkedPackages(source); |
+ expect(packages, hasLength(2)); |
+ } |
+ |
+ test_getLinkedPackages_withDependency_import_cycle() { |
+ _setComponentFile( |
+ 'aaa', |
+ 'a.dart', |
+ r''' |
+import 'package:components.bbb/b.dart'; |
+class A {} |
+class A2 extends B {} |
+'''); |
+ _setComponentFile( |
+ 'bbb', |
+ 'b.dart', |
+ r''' |
+import 'package:components.aaa/a.dart'; |
+class B extends A {} |
+class B2 extends A2 {} |
+'''); |
+ _writeUnlinkedBundle('components.aaa'); |
+ _writeUnlinkedBundle('components.bbb'); |
+ Source source = _resolveUri('package:components.bbb/b.dart'); |
+ List<Package> packages = manager.getLinkedPackages(source); |
+ expect(packages, hasLength(2)); |
+ } |
+ |
+ test_getLinkedPackages_withDependency_import_indirect() { |
+ _setComponentFile('aaa', 'a.dart', 'class A {}'); |
+ _setComponentFile( |
+ 'bbb', |
+ 'b.dart', |
+ r''' |
+import 'package:components.aaa/a.dart'; |
+class B extends A {} |
+'''); |
+ _setComponentFile( |
+ 'ccc', |
+ 'c.dart', |
+ r''' |
+import 'package:components.bbb/b.dart'; |
+class C extends B {} |
+'''); |
+ _writeUnlinkedBundle('components.aaa'); |
+ _writeUnlinkedBundle('components.bbb'); |
+ _writeUnlinkedBundle('components.ccc'); |
+ Source source = _resolveUri('package:components.ccc/c.dart'); |
+ List<Package> packages = manager.getLinkedPackages(source); |
+ expect(packages, hasLength(3)); |
+ } |
+ |
+ test_getLinkedPackages_withoutDependencies() { |
+ _setComponentFile('aaa', 'a.dart', 'class A {}'); |
+ _writeUnlinkedBundle('components.aaa'); |
+ // Ask the package for the URI. |
+ Source source = _resolveUri('package:components.aaa/a.dart'); |
+ List<Package> packages = manager.getLinkedPackages(source); |
+ expect(packages, hasLength(1)); |
+ } |
+ |
test_getUnlinkedForUri() { |
_setComponentFile('aaa', 'a1.dart', 'class A1 {}'); |
_setComponentFile('aaa', 'a2.dart', 'class A2 {}'); |