diff options
author | 2017-08-01 20:47:59 +0200 | |
---|---|---|
committer | 2017-08-02 10:40:02 +0200 | |
commit | 7df851524497afd7b1833418cc639d9c8f417451 (patch) | |
tree | 5a8f0c12749fdda9731bc9571c7e4f780ef09c5c /src/test/java/com/google/devtools/build | |
parent | 71238601b8ca147cfd4f9498e11d8517b25ac69a (diff) |
Automated rollback of commit c32e1b1efcd703b3780de47fba62974123593d71.
*** Reason for rollback ***
Breaks depot b/64250728
*** Original change description ***
Use RequiredProviders to validate rule prerequisites in RuleContext.
We now use a unified way to check provider requirements everywhere.
RELNOTES: None.
PiperOrigin-RevId: 163862067
Diffstat (limited to 'src/test/java/com/google/devtools/build')
3 files changed, 52 insertions, 99 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RequiredProvidersTest.java b/src/test/java/com/google/devtools/build/lib/packages/RequiredProvidersTest.java index ca8a9960d7..e86cc41f16 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/RequiredProvidersTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/RequiredProvidersTest.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.packages; import static com.google.common.truth.Truth.assertThat; +import com.google.common.base.Predicates; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; @@ -30,9 +31,6 @@ import org.junit.runners.JUnit4; */ @RunWith(JUnit4.class) public class RequiredProvidersTest { - - private static final String NO_PROVIDERS_REQUIRED = "no providers required"; - private static final class P1 {} private static final class P2 {} private static final class P3 {} @@ -61,11 +59,10 @@ public class RequiredProvidersTest { RequiredProviders requiredProviders) { boolean result = requiredProviders.isSatisfiedBy(providers); - assertThat( - requiredProviders.isSatisfiedBy( - providers.getNativeProviders()::contains, - providers.getSkylarkProviders()::contains)) - .isEqualTo(result); + assertThat(requiredProviders.isSatisfiedBy( + Predicates.in(providers.getNativeProviders()), + Predicates.in(providers.getSkylarkProviders()) + )).isEqualTo(result); return result; } @@ -111,34 +108,32 @@ public class RequiredProvidersTest { .addNative(P1.class) .addNative(P2.class) .build(); - assertThat( - validateNative( - providerSet, - NO_PROVIDERS_REQUIRED, - ImmutableSet.of(P1.class, P2.class))) + assertThat(validateNative(providerSet, ImmutableSet.<Class<?>>of(P1.class, P2.class))) .isTrue(); } @Test public void nativeProvidersBranchMatch() { assertThat( - validateNative( - AdvertisedProviderSet.builder().addNative(P1.class).build(), - NO_PROVIDERS_REQUIRED, - ImmutableSet.<Class<?>>of(P1.class), - ImmutableSet.<Class<?>>of(P2.class))) - .isTrue(); + validateNative( + AdvertisedProviderSet.builder() + .addNative(P1.class) + .build(), + ImmutableSet.<Class<?>>of(P1.class), + ImmutableSet.<Class<?>>of(P2.class) + )).isTrue(); } @Test public void nativeProvidersNoMatch() { assertThat( - validateNative( - AdvertisedProviderSet.builder().addNative(P3.class).build(), - "P1 or P2", - ImmutableSet.<Class<?>>of(P1.class), - ImmutableSet.<Class<?>>of(P2.class))) - .isFalse(); + validateNative( + AdvertisedProviderSet.builder() + .addNative(P3.class) + .build(), + ImmutableSet.<Class<?>>of(P1.class), + ImmutableSet.<Class<?>>of(P2.class) + )).isFalse(); } @Test @@ -149,7 +144,6 @@ public class RequiredProvidersTest { .addSkylark(ID_SKYLARK) .build(); assertThat(validateSkylark(providerSet, - NO_PROVIDERS_REQUIRED, ImmutableSet.of( ID_LEGACY, ID_SKYLARK, ID_NATIVE))) .isTrue(); @@ -158,64 +152,44 @@ public class RequiredProvidersTest { @Test public void skylarkProvidersBranchMatch() { assertThat( - validateSkylark( - AdvertisedProviderSet.builder().addSkylark(ID_LEGACY).build(), - NO_PROVIDERS_REQUIRED, - ImmutableSet.of(ID_LEGACY), - ImmutableSet.of(ID_NATIVE))) - .isTrue(); + validateSkylark( + AdvertisedProviderSet.builder() + .addSkylark(ID_LEGACY) + .build(), + ImmutableSet.of(ID_LEGACY), + ImmutableSet.of(ID_NATIVE) + )).isTrue(); } @Test public void skylarkProvidersNoMatch() { assertThat( - validateSkylark( - AdvertisedProviderSet.builder().addSkylark(ID_SKYLARK).build(), - "'p_legacy' or 'p_native'", - ImmutableSet.of(ID_LEGACY), - ImmutableSet.of(ID_NATIVE))) - .isFalse(); - } - - @Test - public void checkDescriptions() { - assertThat(RequiredProviders.acceptAnyBuilder().build().getDescription()) - .isEqualTo("no providers required"); - assertThat(RequiredProviders.acceptNoneBuilder().build().getDescription()) - .isEqualTo("no providers accepted"); - assertThat( - RequiredProviders.acceptAnyBuilder() - .addSkylarkSet(ImmutableSet.of(ID_LEGACY, ID_SKYLARK)) - .addSkylarkSet(ImmutableSet.of(ID_SKYLARK)) - .addNativeSet(ImmutableSet.of(P1.class, P2.class)) - .build() - .getDescription()) - .isEqualTo("[P1, P2] or ['p_legacy', 'p_skylark'] or 'p_skylark'"); + validateSkylark( + AdvertisedProviderSet.builder() + .addSkylark(ID_SKYLARK) + .build(), + ImmutableSet.of(ID_LEGACY), + ImmutableSet.of(ID_NATIVE) + )).isFalse(); } @SafeVarargs - private static boolean validateNative( - AdvertisedProviderSet providerSet, String missing, ImmutableSet<Class<?>>... sets) { + private static boolean validateNative(AdvertisedProviderSet providerSet, + ImmutableSet<Class<?>>... sets) { Builder anyBuilder = RequiredProviders.acceptAnyBuilder(); Builder noneBuilder = RequiredProviders.acceptNoneBuilder(); for (ImmutableSet<Class<?>> set : sets) { anyBuilder.addNativeSet(set); noneBuilder.addNativeSet(set); } - RequiredProviders rpStartingFromAny = anyBuilder.build(); - boolean result = satisfies(providerSet, rpStartingFromAny); - assertThat(rpStartingFromAny.getMissing(providerSet).getDescription()).isEqualTo(missing); - - RequiredProviders rpStaringFromNone = noneBuilder.build(); - assertThat(satisfies(providerSet, rpStaringFromNone)).isEqualTo(result); - assertThat(rpStaringFromNone.getMissing(providerSet).getDescription()).isEqualTo(missing); + boolean result = satisfies(providerSet, anyBuilder.build()); + assertThat(satisfies(providerSet, noneBuilder.build())).isEqualTo(result); return result; } @SafeVarargs private static boolean validateSkylark( AdvertisedProviderSet providerSet, - String missing, ImmutableSet<SkylarkProviderIdentifier>... sets) { Builder anyBuilder = RequiredProviders.acceptAnyBuilder(); Builder noneBuilder = RequiredProviders.acceptNoneBuilder(); @@ -223,14 +197,8 @@ public class RequiredProvidersTest { anyBuilder.addSkylarkSet(set); noneBuilder.addSkylarkSet(set); } - - RequiredProviders rpStartingFromAny = anyBuilder.build(); - boolean result = satisfies(providerSet, rpStartingFromAny); - assertThat(rpStartingFromAny.getMissing(providerSet).getDescription()).isEqualTo(missing); - - RequiredProviders rpStaringFromNone = noneBuilder.build(); - assertThat(satisfies(providerSet, rpStaringFromNone)).isEqualTo(result); - assertThat(rpStaringFromNone.getMissing(providerSet).getDescription()).isEqualTo(missing); + boolean result = satisfies(providerSet, anyBuilder.build()); + assertThat(satisfies(providerSet, noneBuilder.build())).isEqualTo(result); return result; } } 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 71e084da10..b346a60513 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', 'output_groups',", + " 'files_to_run', 'label', '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 c212605bc2..5c32321734 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,18 +249,8 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase { buildAttribute("a1", "b = provider()", "attr.label_list(allow_files = True, providers = ['a', 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(); + assertThat(attr.getMandatoryProvidersList()) + .containsExactly(ImmutableSet.of(legacy("a"), declared("b"))); } @Test @@ -269,17 +259,9 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase { buildAttribute("a1", "b = provider()", "attr.label_list(allow_files = True, providers = [['a', b], ['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(); + assertThat(attr.getMandatoryProvidersList()).containsExactly( + ImmutableSet.of(legacy("a"), declared("b")), + ImmutableSet.of(legacy("c"))); } private void checkAttributeError(String expectedMessage, String... lines) throws Exception { @@ -443,9 +425,12 @@ public class SkylarkRuleClassFunctionsTest extends SkylarkTestCase { private static final RuleClass.ConfiguredTargetFactory<Object, Object> DUMMY_CONFIGURED_TARGET_FACTORY = - ruleContext -> { - throw new IllegalStateException(); - }; + new RuleClass.ConfiguredTargetFactory<Object, Object>() { + @Override + public Object create(Object ruleContext) throws InterruptedException { + throw new IllegalStateException(); + } + }; private RuleClass ruleClass(String name) { return new RuleClass.Builder(name, RuleClassType.NORMAL, false) |