aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-05-03 18:37:11 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-05-03 21:33:51 +0000
commitd126074065d076a6f35683bf9532bf15a1f6f6e9 (patch)
tree9f25a58fa67464ff2206a828be15e019d69fa22b /src/test/java/com
parentc9c473d8cae3d085eeeceadf92482793a97d3f16 (diff)
Remove a dependency on dart_library rule from ConfiguredTargetTransitivePackagesTest.
-- MOS_MIGRATED_REVID=121398365
Diffstat (limited to 'src/test/java/com')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java35
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java20
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java18
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java29
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 {