diff options
author | Dmitry Lomov <dslomov@google.com> | 2016-05-03 18:37:11 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2016-05-03 21:33:51 +0000 |
commit | d126074065d076a6f35683bf9532bf15a1f6f6e9 (patch) | |
tree | 9f25a58fa67464ff2206a828be15e019d69fa22b /src/test/java/com | |
parent | c9c473d8cae3d085eeeceadf92482793a97d3f16 (diff) |
Remove a dependency on dart_library rule from ConfiguredTargetTransitivePackagesTest.
--
MOS_MIGRATED_REVID=121398365
Diffstat (limited to 'src/test/java/com')
4 files changed, 59 insertions, 43 deletions
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 8a518bf968..f602e8b441 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.AspectDefinition; 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 @@ import org.junit.runners.JUnit4; @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 @@ public class AspectTest extends AnalysisTestCase { @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 @@ public class AspectTest extends AnalysisTestCase { @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 @@ public class AspectTest extends AnalysisTestCase { @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 @@ public class AspectTest extends AnalysisTestCase { @Test public void aspectWithParametrizedDefinition() throws Exception { - setRules( + setRulesAvailableInTests( new TestAspects.BaseRule(), new TestAspects.HonestRule(), new TestAspects.ParametrizedDefinitionAspectRule()); @@ -156,7 +143,7 @@ public class AspectTest extends AnalysisTestCase { @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 @@ public class AspectTest extends AnalysisTestCase { @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 @@ public class AspectTest extends AnalysisTestCase { @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 @@ public class AspectTest extends AnalysisTestCase { @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 @@ public class AspectTest extends AnalysisTestCase { */ @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 @@ public class AspectTest extends AnalysisTestCase { */ @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 c534f69d1a..9f89ecdb8b 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.NoSuchPackageException; 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 @@ public class DependencyResolverTest extends AnalysisTestCase { 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 @@ public class DependencyResolverTest extends AnalysisTestCase { @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 @@ public class DependencyResolverTest extends AnalysisTestCase { @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 @@ public class DependencyResolverTest extends AnalysisTestCase { @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 4b805e6b4c..f9050cb403 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.BuildView.AnalysisResult; 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 @@ public abstract class AnalysisTestCase extends FoundationTestCase { 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 dc5a02af79..42a4dd2583 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 @@ public class TestAspects { 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 @@ public class TestAspects { } /** + * 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 { |