From 614dc50056348f5cb8eff626c30b4fdf573f2253 Mon Sep 17 00:00:00 2001 From: gregce Date: Wed, 20 Dec 2017 17:24:46 -0800 Subject: Remove ConfigurationTransition.HOST references from lib.packages. This removes the main barrier to making host transitions routine patch transitions. Today you signify a host transition by calling Attribute.Builder.cfg(ConfigurationTransition.HOST). Blaze's configuration machinery auto-converts this to HostTransition.INSTANCE, which is a patch transition. This change provides the groundwork for removing ConfigurationTransition.HOST and removing the special conversion logic. This also paves the way for better API support for multiple host configurations. Also change some cfg(HOST) rule references to cfg(HostTransition.INSTANCE). PiperOrigin-RevId: 179754619 --- .../build/lib/analysis/AspectDefinitionTest.java | 34 +++++++++++++++------- .../packages/ConfigurationFragmentPolicyTest.java | 30 ++++++++++++------- 2 files changed, 42 insertions(+), 22 deletions(-) (limited to 'src/test') diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java index 5738cb1923..5127120ab0 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java @@ -19,6 +19,8 @@ import static org.junit.Assert.fail; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.ConfigAwareAspectBuilder; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.AdvertisedProviderSet; import com.google.devtools.build.lib.packages.AspectDefinition; @@ -254,16 +256,21 @@ public class AspectDefinitionTest { .containsExactly(Integer.class, String.class); } + private static class FooFragment extends BuildConfiguration.Fragment {} + private static class BarFragment extends BuildConfiguration.Fragment {} + @Test public void testRequiresHostConfigurationFragments_PropagatedToConfigurationFragmentPolicy() throws Exception { - AspectDefinition requiresFragments = new AspectDefinition.Builder(TEST_ASPECT_CLASS) - .requiresHostConfigurationFragments(Integer.class, String.class) - .build(); + AspectDefinition requiresFragments = + ConfigAwareAspectBuilder.of(new AspectDefinition.Builder(TEST_ASPECT_CLASS)) + .requiresHostConfigurationFragments(FooFragment.class, BarFragment.class) + .originalBuilder() + .build(); assertThat(requiresFragments.getConfigurationFragmentPolicy()).isNotNull(); assertThat( requiresFragments.getConfigurationFragmentPolicy().getRequiredConfigurationFragments()) - .containsExactly(Integer.class, String.class); + .containsExactly(FooFragment.class, BarFragment.class); } @Test @@ -282,9 +289,12 @@ public class AspectDefinitionTest { @Test public void testRequiresHostConfigurationFragmentNames_PropagatedToConfigurationFragmentPolicy() throws Exception { - AspectDefinition requiresFragments = new AspectDefinition.Builder(TEST_ASPECT_CLASS) - .requiresHostConfigurationFragmentsBySkylarkModuleName(ImmutableList.of("test_fragment")) - .build(); + AspectDefinition requiresFragments = + ConfigAwareAspectBuilder.of(new AspectDefinition.Builder(TEST_ASPECT_CLASS)) + .requiresHostConfigurationFragmentsBySkylarkModuleName( + ImmutableList.of("test_fragment")) + .originalBuilder() + .build(); assertThat(requiresFragments.getConfigurationFragmentPolicy()).isNotNull(); assertThat( requiresFragments.getConfigurationFragmentPolicy() @@ -294,10 +304,12 @@ public class AspectDefinitionTest { @Test public void testEmptySkylarkConfigurationFragmentPolicySetup_HasNonNullPolicy() throws Exception { - AspectDefinition noPolicy = new AspectDefinition.Builder(TEST_ASPECT_CLASS) - .requiresConfigurationFragmentsBySkylarkModuleName(ImmutableList.of()) - .requiresHostConfigurationFragmentsBySkylarkModuleName(ImmutableList.of()) - .build(); + AspectDefinition noPolicy = + ConfigAwareAspectBuilder.of(new AspectDefinition.Builder(TEST_ASPECT_CLASS)) + .requiresHostConfigurationFragmentsBySkylarkModuleName(ImmutableList.of()) + .originalBuilder() + .requiresConfigurationFragmentsBySkylarkModuleName(ImmutableList.of()) + .build(); assertThat(noPolicy.getConfigurationFragmentPolicy()).isNotNull(); } diff --git a/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java b/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java index a3ea359781..7ed005a3d1 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicyTest.java @@ -19,7 +19,6 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition; import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy.MissingFragmentPolicy; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; - import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -71,13 +70,21 @@ public final class ConfigurationFragmentPolicyTest { .containsExactly(Integer.class, String.class, Long.class); } + private static final Attribute.Transition TEST_HOST_TRANSITION = new Attribute.Transition() { + @Override + public boolean isHostTransition() { + return true; + } + }; + @Test public void testRequiresConfigurationFragments_RequiredAndLegalForSpecifiedConfiguration() throws Exception { ConfigurationFragmentPolicy policy = new ConfigurationFragmentPolicy.Builder() .requiresConfigurationFragments(ImmutableSet.>of(Integer.class)) - .requiresHostConfigurationFragments(ImmutableSet.>of(Long.class)) + .requiresConfigurationFragments(TEST_HOST_TRANSITION, + ImmutableSet.>of(Long.class)) .build(); assertThat(policy.getRequiredConfigurationFragments()).containsAllOf(Integer.class, Long.class); @@ -87,7 +94,7 @@ public final class ConfigurationFragmentPolicyTest { .isTrue(); // TODO(mstaib): .isFalse() when dynamic configurations care which configuration a fragment was // specified for - assertThat(policy.isLegalConfigurationFragment(Integer.class, ConfigurationTransition.HOST)) + assertThat(policy.isLegalConfigurationFragment(Integer.class, TEST_HOST_TRANSITION)) .isTrue(); assertThat(policy.isLegalConfigurationFragment(Long.class)).isTrue(); @@ -95,13 +102,13 @@ public final class ConfigurationFragmentPolicyTest { // specified for assertThat(policy.isLegalConfigurationFragment(Long.class, ConfigurationTransition.NONE)) .isTrue(); - assertThat(policy.isLegalConfigurationFragment(Long.class, ConfigurationTransition.HOST)) + assertThat(policy.isLegalConfigurationFragment(Long.class, TEST_HOST_TRANSITION)) .isTrue(); assertThat(policy.isLegalConfigurationFragment(String.class)).isFalse(); assertThat(policy.isLegalConfigurationFragment(String.class, ConfigurationTransition.NONE)) .isFalse(); - assertThat(policy.isLegalConfigurationFragment(String.class, ConfigurationTransition.HOST)) + assertThat(policy.isLegalConfigurationFragment(String.class, TEST_HOST_TRANSITION)) .isFalse(); } @@ -111,7 +118,7 @@ public final class ConfigurationFragmentPolicyTest { ConfigurationFragmentPolicy policy = new ConfigurationFragmentPolicy.Builder() .requiresConfigurationFragmentsBySkylarkModuleName(ImmutableSet.of("test_fragment")) - .requiresHostConfigurationFragmentsBySkylarkModuleName( + .requiresConfigurationFragmentsBySkylarkModuleName(TEST_HOST_TRANSITION, ImmutableSet.of("other_fragment")) .build(); @@ -122,7 +129,7 @@ public final class ConfigurationFragmentPolicyTest { policy.isLegalConfigurationFragment(TestFragment.class, ConfigurationTransition.NONE)) .isTrue(); assertThat( - policy.isLegalConfigurationFragment(TestFragment.class, ConfigurationTransition.HOST)) + policy.isLegalConfigurationFragment(TestFragment.class, TEST_HOST_TRANSITION)) .isFalse(); assertThat(policy.isLegalConfigurationFragment(OtherFragment.class)).isTrue(); @@ -130,7 +137,7 @@ public final class ConfigurationFragmentPolicyTest { policy.isLegalConfigurationFragment(OtherFragment.class, ConfigurationTransition.NONE)) .isFalse(); assertThat( - policy.isLegalConfigurationFragment(OtherFragment.class, ConfigurationTransition.HOST)) + policy.isLegalConfigurationFragment(OtherFragment.class, TEST_HOST_TRANSITION)) .isTrue(); assertThat(policy.isLegalConfigurationFragment(UnknownFragment.class)).isFalse(); @@ -140,7 +147,7 @@ public final class ConfigurationFragmentPolicyTest { .isFalse(); assertThat( policy.isLegalConfigurationFragment( - UnknownFragment.class, ConfigurationTransition.HOST)) + UnknownFragment.class, TEST_HOST_TRANSITION)) .isFalse(); } @@ -155,10 +162,11 @@ public final class ConfigurationFragmentPolicyTest { ConfigurationFragmentPolicy addedPolicy = new ConfigurationFragmentPolicy.Builder() .requiresConfigurationFragmentsBySkylarkModuleName(ImmutableSet.of("other_fragment")) - .requiresHostConfigurationFragmentsBySkylarkModuleName( + .requiresConfigurationFragmentsBySkylarkModuleName(TEST_HOST_TRANSITION, ImmutableSet.of("other_fragment")) .requiresConfigurationFragments(ImmutableSet.>of(Boolean.class)) - .requiresHostConfigurationFragments(ImmutableSet.>of(Character.class)) + .requiresConfigurationFragments(TEST_HOST_TRANSITION, + ImmutableSet.>of(Character.class)) .build(); ConfigurationFragmentPolicy combinedPolicy = new ConfigurationFragmentPolicy.Builder() -- cgit v1.2.3