aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/analysis/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/analysis/util')
-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
2 files changed, 45 insertions, 2 deletions
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 {