Remove a dependency on dart_library rule from ConfiguredTargetTransitivePackagesTest.

--
MOS_MIGRATED_REVID=121398365
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
index 8a518bf..f602e8b 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
@@ -40,7 +40,6 @@
 import com.google.devtools.build.lib.packages.AspectParameters;
 import com.google.devtools.build.lib.packages.NativeAspectClass;
 import com.google.devtools.build.lib.packages.RuleClass;
-import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 import com.google.devtools.build.lib.vfs.ModifiedFileSet;
 
 import org.junit.Test;
@@ -56,25 +55,13 @@
 @RunWith(JUnit4.class)
 public class AspectTest extends AnalysisTestCase {
 
-  private final void setRules(RuleDefinition... rules) throws Exception {
-    ConfiguredRuleClassProvider.Builder builder =
-        new ConfiguredRuleClassProvider.Builder();
-    TestRuleClassProvider.addStandardRules(builder);
-    for (RuleDefinition rule : rules) {
-      builder.addRuleDefinition(rule);
-    }
-
-    useRuleClassProvider(builder.build());
-    update();
-  }
-
   private void pkg(String name, String... contents) throws Exception {
     scratch.file("" + name + "/BUILD", contents);
   }
 
   @Test
   public void providersOfAspectAreMergedIntoDependency() throws Exception {
-    setRules(new TestAspects.BaseRule(), new AspectRequiringRule());
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new AspectRequiringRule());
     pkg("a",
         "aspect(name='a', foo=[':b'])",
         "aspect(name='b', foo=[])");
@@ -86,7 +73,7 @@
 
   @Test
   public void aspectIsNotCreatedIfAdvertisedProviderIsNotPresent() throws Exception {
-    setRules(new TestAspects.BaseRule(), new TestAspects.LiarRule(),
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new TestAspects.LiarRule(),
         new TestAspects.AspectRequiringProviderRule());
 
     pkg("a",
@@ -99,7 +86,7 @@
 
   @Test
   public void aspectCreationWorksThroughBind() throws Exception {
-    setRules(new TestAspects.BaseRule(), new TestAspects.HonestRule(),
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new TestAspects.HonestRule(),
         new TestAspects.AspectRequiringProviderRule());
 
     pkg("a",
@@ -120,7 +107,7 @@
 
   @Test
   public void aspectCreatedIfAdvertisedProviderIsPresent() throws Exception {
-    setRules(new TestAspects.BaseRule(), new TestAspects.HonestRule(),
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new TestAspects.HonestRule(),
         new TestAspects.AspectRequiringProviderRule());
 
     pkg("a",
@@ -134,7 +121,7 @@
 
   @Test
   public void aspectWithParametrizedDefinition() throws Exception {
-    setRules(
+    setRulesAvailableInTests(
         new TestAspects.BaseRule(),
         new TestAspects.HonestRule(),
         new TestAspects.ParametrizedDefinitionAspectRule());
@@ -156,7 +143,7 @@
 
   @Test
   public void aspectInError() throws Exception {
-    setRules(new TestAspects.BaseRule(), new TestAspects.ErrorAspectRule(),
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new TestAspects.ErrorAspectRule(),
         new TestAspects.SimpleRule());
 
     pkg("a",
@@ -178,7 +165,7 @@
 
   @Test
   public void transitiveAspectInError() throws Exception {
-    setRules(new TestAspects.BaseRule(), new TestAspects.ErrorAspectRule(),
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new TestAspects.ErrorAspectRule(),
         new TestAspects.SimpleRule());
 
     pkg("a",
@@ -201,7 +188,7 @@
 
   @Test
   public void sameTargetInDifferentAttributes() throws Exception {
-    setRules(new TestAspects.BaseRule(), new TestAspects.AspectRequiringRule(),
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new TestAspects.AspectRequiringRule(),
         new TestAspects.SimpleRule());
     pkg("a",
         "aspect(name='a', foo=[':b'], bar=[':b'])",
@@ -214,7 +201,7 @@
 
   @Test
   public void informationFromBaseRulePassedToAspect() throws Exception {
-    setRules(new TestAspects.BaseRule(), new TestAspects.HonestRule(),
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new TestAspects.HonestRule(),
         new TestAspects.AspectRequiringProviderRule());
 
     pkg("a",
@@ -280,7 +267,7 @@
    */
   @Test
   public void emptyAspectAttributesAreAvailableInRuleContext() throws Exception {
-    setRules(new TestAspects.BaseRule(),
+    setRulesAvailableInTests(new TestAspects.BaseRule(),
         new EmptyAspectAttributesAreAvailableInRuleContext.TestRule());
     pkg("a",
         "testrule(name='a', foo=[':b'])",
@@ -339,7 +326,7 @@
    */
   @Test
   public void extraActionsAreEmitted() throws Exception {
-    setRules(new TestAspects.BaseRule(),
+    setRulesAvailableInTests(new TestAspects.BaseRule(),
         new ExtraActionsAreEmitted.TestRule());
     useConfiguration("--experimental_action_listener=//extra_actions:listener");
     scratch.file(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java b/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
index c534f69..9f89ecd 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
@@ -31,7 +31,6 @@
 import com.google.devtools.build.lib.packages.NoSuchTargetException;
 import com.google.devtools.build.lib.packages.NoSuchThingException;
 import com.google.devtools.build.lib.packages.Target;
-import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -88,19 +87,6 @@
     scratch.file("" + name + "/BUILD", contents);
   }
 
-  @SafeVarargs
-  private final void setRules(RuleDefinition... rules) throws Exception {
-    ConfiguredRuleClassProvider.Builder builder =
-        new ConfiguredRuleClassProvider.Builder();
-    TestRuleClassProvider.addStandardRules(builder);
-    for (RuleDefinition rule : rules) {
-      builder.addRuleDefinition(rule);
-    }
-
-    useRuleClassProvider(builder.build());
-    update();
-  }
-
   private ListMultimap<Attribute, Dependency> dependentNodeMap(
       String targetName, NativeAspectClass aspect) throws Exception {
     Target target = packageManager.getTarget(reporter, Label.parseAbsolute(targetName));
@@ -140,7 +126,7 @@
 
   @Test
   public void hasAspectsRequiredByRule() throws Exception {
-    setRules(new AspectRequiringRule(), new TestAspects.BaseRule());
+    setRulesAvailableInTests(new AspectRequiringRule(), new TestAspects.BaseRule());
     pkg("a",
         "aspect(name='a', foo=[':b'])",
         "aspect(name='b', foo=[])");
@@ -152,7 +138,7 @@
 
   @Test
   public void hasAspectsRequiredByAspect() throws Exception {
-    setRules(new TestAspects.BaseRule(), new TestAspects.SimpleRule());
+    setRulesAvailableInTests(new TestAspects.BaseRule(), new TestAspects.SimpleRule());
     pkg("a",
         "simple(name='a', foo=[':b'])",
         "simple(name='b', foo=[])");
@@ -165,7 +151,7 @@
 
   @Test
   public void hasAspectDependencies() throws Exception {
-    setRules(new TestAspects.BaseRule());
+    setRulesAvailableInTests(new TestAspects.BaseRule());
     pkg("a", "base(name='a')");
     pkg("extra", "base(name='extra')");
     ListMultimap<Attribute, Dependency> map =
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
index 4b805e6..f9050cb 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
@@ -28,6 +28,7 @@
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.InputFileConfiguredTarget;
+import com.google.devtools.build.lib.analysis.RuleDefinition;
 import com.google.devtools.build.lib.analysis.config.BinTools;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
@@ -406,4 +407,21 @@
   protected void clearAnalysisResult() {
     analysisResult = null;
   }
+
+  /**
+   * Makes {@code rules} available in tests, in addition to all the rules available to Blaze at 
+   * running time (e.g., java_library).
+   */
+  protected final void setRulesAvailableInTests(RuleDefinition... rules) throws Exception {
+    ConfiguredRuleClassProvider.Builder builder =
+        new ConfiguredRuleClassProvider.Builder();
+    TestRuleClassProvider.addStandardRules(builder);
+    for (RuleDefinition rule : rules) {
+      builder.addRuleDefinition(rule);
+    }
+
+    useRuleClassProvider(builder.build());
+    update();
+  }
+
 }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
index dc5a02a..42a4dd2 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
@@ -117,8 +117,10 @@
   private static NestedSet<String> collectAspectData(String me, RuleContext ruleContext) {
     NestedSetBuilder<String> result = new NestedSetBuilder<>(Order.STABLE_ORDER);
     result.add(me);
-    for (AspectInfo dep : ruleContext.getPrerequisites("foo", Mode.TARGET, AspectInfo.class)) {
-      result.addTransitive(dep.getData());
+    if (ruleContext.attributes().has("foo", LABEL_LIST)) {
+      for (AspectInfo dep : ruleContext.getPrerequisites("foo", Mode.TARGET, AspectInfo.class)) {
+        result.addTransitive(dep.getData());
+      }
     }
 
     return result.build();
@@ -415,6 +417,29 @@
   }
 
   /**
+   * A rule that defines an {@link ExtraAttributeAspect} on one of its attributes.
+   */
+  public static class ExtraAttributeAspectRule implements RuleDefinition {
+
+    @Override
+    public RuleClass build(Builder builder, RuleDefinitionEnvironment environment) {
+      return builder
+          .add(attr("foo", LABEL_LIST).allowedFileTypes(FileTypeSet.ANY_FILE)
+              .aspect(EXTRA_ATTRIBUTE_ASPECT))
+          .build();
+    }
+
+    @Override
+    public Metadata getMetadata() {
+      return RuleDefinition.Metadata.builder()
+          .name("rule_with_extra_deps_aspect")
+          .factoryClass(DummyRuleFactory.class)
+          .ancestors(BaseRule.class)
+          .build();
+    }
+  }
+
+  /**
    * A rule that defines an {@link ParametrizedDefinitionAspect} on one of its attributes.
    */
   public static class ParametrizedDefinitionAspectRule implements RuleDefinition {