diff options
author | 2015-09-02 09:53:58 +0000 | |
---|---|---|
committer | 2015-09-02 11:54:27 +0000 | |
commit | 702cad7ffc9bc67737fe1a281dbebbeef41b6551 (patch) | |
tree | ccc900af54b2e11800c1b29374bd81e75d7dbd1a /src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java | |
parent | f4888b1ef784ddddf088f67685572b647be5d460 (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.java | 32 |
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(); } |