aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/skylark
diff options
context:
space:
mode:
authorGravatar dslomov <dslomov@google.com>2017-07-31 19:23:52 +0200
committerGravatar Dmitry Lomov <dslomov@google.com>2017-07-31 20:20:46 +0200
commitc32e1b1efcd703b3780de47fba62974123593d71 (patch)
tree78f4968a6cce9ff56831f7344f65923e43904768 /src/test/java/com/google/devtools/build/lib/skylark
parent52f11c6d3c2052a57db76957909f3c89a26eb251 (diff)
Use RequiredProviders to validate rule prerequisites in RuleContext.
We now use a unified way to check provider requirements everywhere. RELNOTES: None. PiperOrigin-RevId: 163710961
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skylark')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java42
2 files changed, 33 insertions, 11 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
index 08b9ccdf39..6db90093bd 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
@@ -711,7 +711,7 @@ public class SkylarkIntegrationTest extends BuildViewTestCase {
"main_rule = rule(implementation = rule_impl, attrs = {",
" 'deps': attr.label_list(providers = [",
" 'files', 'data_runfiles', 'default_runfiles',",
- " 'files_to_run', 'label', 'output_groups',",
+ " 'files_to_run', 'output_groups',",
" ])",
"})");
scratch.file(
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index b3d614816d..9c20c6bd02 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -249,19 +249,44 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase {
buildAttribute("a1",
"b = provider()",
"attr.label_list(allow_files = True, providers = ['a', b])");
- assertThat(attr.getMandatoryProvidersList())
- .containsExactly(ImmutableSet.of(legacy("a"), declared("b")));
+ assertThat(attr.getRequiredProviders().isSatisfiedBy(set(legacy("a"), declared("b"))))
+ .isTrue();
+ assertThat(attr.getRequiredProviders().isSatisfiedBy(set(legacy("a"))))
+ .isFalse();
+
}
@Test
+ public void testAttrWithProvidersOneEmpty() throws Exception {
+ Attribute attr =
+ buildAttribute("a1",
+ "b = provider()",
+ "attr.label_list(allow_files = True, providers = [['a', b],[]])");
+ assertThat(attr.getRequiredProviders().acceptsAny()).isTrue();
+ }
+
+
+ @Test
public void testAttrWithProvidersList() throws Exception {
Attribute attr =
buildAttribute("a1",
"b = provider()",
"attr.label_list(allow_files = True, providers = [['a', b], ['c']])");
- assertThat(attr.getMandatoryProvidersList()).containsExactly(
- ImmutableSet.of(legacy("a"), declared("b")),
- ImmutableSet.of(legacy("c")));
+ assertThat(attr.getRequiredProviders().isSatisfiedBy(set(legacy("a"), declared("b"))))
+ .isTrue();
+ assertThat(attr.getRequiredProviders().isSatisfiedBy(set(legacy("c"))))
+ .isTrue();
+ assertThat(attr.getRequiredProviders().isSatisfiedBy(set(legacy("a"))))
+ .isFalse();
+
+ }
+
+ private static AdvertisedProviderSet set(SkylarkProviderIdentifier ...ids) {
+ AdvertisedProviderSet.Builder builder = AdvertisedProviderSet.builder();
+ for (SkylarkProviderIdentifier id : ids) {
+ builder.addSkylark(id);
+ }
+ return builder.build();
}
private void checkAttributeError(String expectedMessage, String... lines) throws Exception {
@@ -425,11 +450,8 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase {
private static final RuleClass.ConfiguredTargetFactory<Object, Object>
DUMMY_CONFIGURED_TARGET_FACTORY =
- new RuleClass.ConfiguredTargetFactory<Object, Object>() {
- @Override
- public Object create(Object ruleContext) throws InterruptedException {
- throw new IllegalStateException();
- }
+ ruleContext -> {
+ throw new IllegalStateException();
};
private RuleClass ruleClass(String name) {