aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
diff options
context:
space:
mode:
authorGravatar Marian Lobur <loburm@google.com>2015-09-02 09:53:58 +0000
committerGravatar Florian Weikert <fwe@google.com>2015-09-02 11:54:27 +0000
commit702cad7ffc9bc67737fe1a281dbebbeef41b6551 (patch)
treeccc900af54b2e11800c1b29374bd81e75d7dbd1a /src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
parentf4888b1ef784ddddf088f67685572b647be5d460 (diff)
Aspects can get information from their base rule.
-- MOS_MIGRATED_REVID=102126786
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java32
1 files changed, 28 insertions, 4 deletions
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();
}