aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google/devtools')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java14
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/AspectValueTest.java25
-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/BuildViewTestCase.java11
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java32
6 files changed, 78 insertions, 27 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
index b4b055aee0..461738eb7f 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
@@ -17,6 +17,7 @@ import static com.google.devtools.build.lib.packages.Attribute.attr;
import static org.junit.Assert.fail;
import com.google.devtools.build.lib.packages.AspectDefinition;
+import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Type;
import com.google.devtools.build.lib.syntax.Label;
@@ -46,7 +47,7 @@ public class AspectDefinitionTest {
}
@Override
- public Aspect create(ConfiguredTarget base, RuleContext context) {
+ public Aspect create(ConfiguredTarget base, RuleContext context, AspectParameters parameters) {
throw new IllegalStateException();
}
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 7d17a98cb5..02b4f3e1dc 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
@@ -137,4 +137,18 @@ public class AspectTest extends AnalysisTestCase {
assertThat(a.getProvider(TestAspects.RuleInfo.class).getData())
.containsExactly("aspect //a:b", "rule //a:a");
}
+
+ @Test
+ public void informationFromBaseRulePassedToAspect() throws Exception {
+ setRules(new TestAspects.BaseRule(), new TestAspects.HonestRule(),
+ new TestAspects.AspectRequiringProviderRule());
+
+ pkg("a",
+ "aspect_requiring_provider(name='a', foo=[':b'], baz='hello')",
+ "honest(name='b', foo=[])");
+
+ ConfiguredTarget a = getConfiguredTarget("//a:a");
+ assertThat(a.getProvider(TestAspects.RuleInfo.class).getData())
+ .containsExactly("rule //a:a", "aspect //a:b data hello");
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectValueTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectValueTest.java
index 5365728bea..2906961e7b 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectValueTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectValueTest.java
@@ -17,6 +17,7 @@ import com.google.common.testing.EqualsTester;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
import com.google.devtools.build.lib.analysis.util.TestAspects;
+import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.skyframe.AspectValue;
import com.google.devtools.build.lib.syntax.Label;
@@ -51,18 +52,26 @@ public class AspectValueTest extends AnalysisTestCase {
Label l1 = Label.parseAbsolute("//a:l1");
Label l1b = Label.parseAbsolute("//a:l1");
Label l2 = Label.parseAbsolute("//a:l2");
+ AspectParameters i1 = new AspectParameters.Builder()
+ .addAttribute("foo", "bar")
+ .build();
+ AspectParameters i2 = new AspectParameters.Builder()
+ .addAttribute("foo", "baz")
+ .build();
Class<? extends ConfiguredAspectFactory> a1 = TestAspects.AttributeAspect.class;
Class<? extends ConfiguredAspectFactory> a2 = TestAspects.ExtraAttributeAspect.class;
new EqualsTester()
- .addEqualityGroup(AspectValue.key(l1, c1, a1), AspectValue.key(l1b, c1, a1))
- .addEqualityGroup(AspectValue.key(l2, c1, a1))
- .addEqualityGroup(AspectValue.key(l1, c2, a1))
- .addEqualityGroup(AspectValue.key(l2, c2, a1))
- .addEqualityGroup(AspectValue.key(l1, c1, a2))
- .addEqualityGroup(AspectValue.key(l2, c1, a2))
- .addEqualityGroup(AspectValue.key(l1, c2, a2))
- .addEqualityGroup(AspectValue.key(l2, c2, a2))
+ .addEqualityGroup(AspectValue.key(l1, c1, a1, null), AspectValue.key(l1b, c1, a1, null))
+ .addEqualityGroup(AspectValue.key(l1, c1, a1, i1))
+ .addEqualityGroup(AspectValue.key(l1, c1, a1, i2))
+ .addEqualityGroup(AspectValue.key(l2, c1, a1, null))
+ .addEqualityGroup(AspectValue.key(l1, c2, a1, null))
+ .addEqualityGroup(AspectValue.key(l2, c2, a1, null))
+ .addEqualityGroup(AspectValue.key(l1, c1, a2, null))
+ .addEqualityGroup(AspectValue.key(l2, c1, a2, null))
+ .addEqualityGroup(AspectValue.key(l1, c2, a2, null))
+ .addEqualityGroup(AspectValue.key(l2, c2, a2, null))
.addEqualityGroup(l1) // A random object
.testEquals();
}
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 fc5b156dca..e149cb8693 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
@@ -116,7 +116,7 @@ public class DependencyResolverTest extends AnalysisTestCase {
new TargetAndConfiguration(target, getTargetConfiguration()),
getHostConfiguration(),
aspectDefinition,
- ImmutableSet.<ConfigMatchingProvider>of());
+ null, ImmutableSet.<ConfigMatchingProvider>of());
}
@SafeVarargs
@@ -199,15 +199,15 @@ public class DependencyResolverTest extends AnalysisTestCase {
BuildConfiguration host = getHostConfiguration();
BuildConfiguration target = getTargetConfiguration();
- ImmutableSet<Class<? extends ConfiguredAspectFactory>> twoAspects =
- ImmutableSet.<Class<? extends ConfiguredAspectFactory>>of(
- TestAspects.SimpleAspect.class, TestAspects.AttributeAspect.class);
- ImmutableSet<Class<? extends ConfiguredAspectFactory>> inverseAspects =
- ImmutableSet.<Class<? extends ConfiguredAspectFactory>>of(
- TestAspects.AttributeAspect.class, TestAspects.SimpleAspect.class);
- ImmutableSet<Class<? extends ConfiguredAspectFactory>> differentAspects =
- ImmutableSet.<Class<? extends ConfiguredAspectFactory>>of(
- TestAspects.AttributeAspect.class, TestAspects.ErrorAspect.class);
+ ImmutableSet<AspectWithParameters> twoAspects = ImmutableSet.of(
+ new AspectWithParameters(TestAspects.SimpleAspect.class),
+ new AspectWithParameters(TestAspects.AttributeAspect.class));
+ ImmutableSet<AspectWithParameters> inverseAspects = ImmutableSet.of(
+ new AspectWithParameters(TestAspects.AttributeAspect.class),
+ new AspectWithParameters(TestAspects.SimpleAspect.class));
+ ImmutableSet<AspectWithParameters> differentAspects = ImmutableSet.of(
+ new AspectWithParameters(TestAspects.AttributeAspect.class),
+ new AspectWithParameters(TestAspects.ErrorAspect.class));
new EqualsTester()
.addEqualityGroup(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 7f7d05b052..7068278951 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -84,6 +84,7 @@ import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.exec.ExecutionOptions;
+import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.ConstantRuleVisibility;
@@ -861,9 +862,9 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
* Gets a derived Artifact for testing in the subdirectory of the {@link
* BuildConfiguration#getBinDirectory()} corresponding to the package of {@code owner},
* where the given artifact belongs to the given ConfiguredTarget together with the given Aspect.
- * So to specify a file foo/foo.o owned by target //foo:foo with an apsect from FooAspect,
+ * So to specify a file foo/foo.o owned by target //foo:foo with an aspect from FooAspect,
* {@code packageRelativePath} should just be "foo.o", and aspectOfOwner should be
- * FooAspect.class. This method is necessary when an Apsect of the target, not the target itself,
+ * FooAspect.class. This method is necessary when an Aspect of the target, not the target itself,
* is creating an Artifact.
*/
protected Artifact getBinArtifact(String packageRelativePath, ConfiguredTarget owner,
@@ -871,7 +872,8 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
return getPackageRelativeDerivedArtifact(packageRelativePath,
owner.getConfiguration().getBinDirectory(),
(AspectValue.AspectKey) AspectValue.key(
- owner.getLabel(), owner.getConfiguration(), creatingAspectFactory).argument());
+ owner.getLabel(), owner.getConfiguration(), creatingAspectFactory,
+ AspectParameters.EMPTY).argument());
}
/**
@@ -930,7 +932,8 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
return getPackageRelativeDerivedArtifact(packageRelativePath,
owner.getConfiguration().getGenfilesDirectory(),
(AspectValue.AspectKey) AspectValue.key(
- owner.getLabel(), owner.getConfiguration(), creatingAspectFactory).argument());
+ owner.getLabel(), owner.getConfiguration(), creatingAspectFactory,
+ AspectParameters.EMPTY).argument());
}
/**
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 bf564fb225..ffea8bcc9f 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
@@ -22,6 +22,8 @@ import static com.google.devtools.build.lib.packages.Type.NODEP_LABEL_LIST;
import static com.google.devtools.build.lib.packages.Type.STRING;
import static com.google.devtools.build.lib.packages.Type.STRING_LIST;
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.Aspect;
import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory;
@@ -39,6 +41,8 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.AspectDefinition;
+import com.google.devtools.build.lib.packages.AspectParameters;
+import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
@@ -131,11 +135,16 @@ public class TestAspects {
*/
public abstract static class BaseAspect implements ConfiguredAspectFactory {
@Override
- public Aspect create(ConfiguredTarget base, RuleContext ruleContext) {
+ public Aspect create(ConfiguredTarget base, RuleContext ruleContext,
+ AspectParameters parameters) {
+ String information = parameters.isEmpty()
+ ? ""
+ : " data " + Iterables.getFirst(parameters.getAttribute("baz"), null);
return new Aspect.Builder(getClass().getName())
.addProvider(
AspectInfo.class,
- new AspectInfo(collectAspectData("aspect " + ruleContext.getLabel(), ruleContext)))
+ new AspectInfo(collectAspectData("aspect " + ruleContext.getLabel() + information,
+ ruleContext)))
.build();
}
}
@@ -215,7 +224,8 @@ public class TestAspects {
*/
public static class ErrorAspect implements ConfiguredAspectFactory {
@Override
- public Aspect create(ConfiguredTarget base, RuleContext ruleContext) {
+ public Aspect create(ConfiguredTarget base, RuleContext ruleContext,
+ AspectParameters parameters) {
ruleContext.ruleError("Aspect error");
return null;
}
@@ -290,11 +300,25 @@ public class TestAspects {
* A rule that defines an {@link AspectRequiringProvider} on one of its attributes.
*/
public static class AspectRequiringProviderRule implements RuleDefinition {
+
+ private static final class TestAspectParametersExtractor implements
+ Function<Rule, AspectParameters> {
+ @Override
+ public AspectParameters apply(Rule rule) {
+ if (rule.isAttrDefined("baz", STRING)) {
+ return new AspectParameters.Builder().addAttribute("baz",
+ rule.getAttributeContainer().getAttr("baz").toString()).build();
+ }
+ return AspectParameters.EMPTY;
+ }
+ }
+
@Override
public RuleClass build(Builder builder, RuleDefinitionEnvironment environment) {
return builder
.add(attr("foo", LABEL_LIST).allowedFileTypes(FileTypeSet.ANY_FILE)
- .aspect(AspectRequiringProvider.class))
+ .aspect(AspectRequiringProvider.class, new TestAspectParametersExtractor()))
+ .add(attr("baz", STRING))
.build();
}