aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
diff options
context:
space:
mode:
authorGravatar Yun Peng <pcloudy@google.com>2016-02-23 18:37:44 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-23 22:18:25 +0000
commit83fbb91a5a2afd15f0ab1e251812bd6692e0728a (patch)
tree1a402de1d2fbd15b6163b1a967c8fbede8743610 /src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
parent17129d4f838cd18b74551e0dd56e290975a6dc8c (diff)
Support "mandatoryProvidersList" in Skylark and added necessary tests
The type of attribute "providers" now is a list of lists of string. But a list of string is still supported. -- MOS_MIGRATED_REVID=115357326
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java b/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
index eaf1ceec6c..8b708a3d18 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/TestRuleClassProvider.java
@@ -20,6 +20,7 @@ import static com.google.devtools.build.lib.packages.BuildType.OUTPUT_LIST;
import static com.google.devtools.build.lib.syntax.Type.INTEGER;
import static com.google.devtools.build.lib.syntax.Type.STRING_LIST;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.RuleDefinition;
@@ -59,6 +60,7 @@ public class TestRuleClassProvider {
new ConfiguredRuleClassProvider.Builder();
addStandardRules(builder);
builder.addRuleDefinition(new TestingDummyRule());
+ builder.addRuleDefinition(new TestingRuleForMandatoryProviders());
ruleProvider = builder.build();
}
return ruleProvider;
@@ -85,4 +87,25 @@ public class TestRuleClassProvider {
.build();
}
}
+
+ public static final class TestingRuleForMandatoryProviders implements RuleDefinition {
+ @Override
+ public RuleClass build(Builder builder, RuleDefinitionEnvironment env) {
+ return builder
+ .setUndocumented()
+ .add(attr("srcs", LABEL_LIST).allowedFileTypes(FileTypeSet.ANY_FILE))
+ .override(builder.copy("deps").mandatoryProvidersList(ImmutableList.of(
+ ImmutableList.of("a"), ImmutableList.of("b", "c"))))
+ .build();
+ }
+
+ @Override
+ public Metadata getMetadata() {
+ return RuleDefinition.Metadata.builder()
+ .name("testing_rule_for_mandatory_providers")
+ .ancestors(BaseRuleClasses.RuleBase.class)
+ .factoryClass(UnknownRuleConfiguredTarget.class)
+ .build();
+ }
+ }
}