aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-04-19 22:13:59 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-04-20 11:17:13 +0000
commit2e62c0d5ac01a2cb4a3534f73519a5ad92cef60c (patch)
treeccb56a57e7f3602c3acf9f89379062b46ad1a27e /src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
parent66cf13874a3c8f866aeace2d59231e30ca4a5032 (diff)
Introduce SplitTransitionProvider, to determine the split transition on an attribute based on the Rule itself (the transition may thus be determined based on the values of other attributes of the rule)
-- MOS_MIGRATED_REVID=120275649
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
index b8a6f49534..07d5a28c3b 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.packages;
import static com.google.common.truth.Truth.assertThat;
import static com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition.HOST;
+import static com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition.SPLIT;
import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST;
@@ -27,8 +28,12 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.util.TestAspects;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
+import com.google.devtools.build.lib.packages.Attribute.SplitTransitionProvider;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.FileType;
import com.google.devtools.build.lib.util.FileTypeSet;
@@ -258,4 +263,49 @@ public class AttributeTest {
assertFalse(attr("foo_nonconfigurable", BuildType.LABEL_LIST).legacyAllowAnyFileType()
.nonconfigurable("test").build().isConfigurable());
}
+
+ @Test
+ public void testSplitTransition() throws Exception {
+ TestSplitTransition splitTransition = new TestSplitTransition();
+ Attribute attr = attr("foo", LABEL).cfg(splitTransition).allowedFileTypes().build();
+ assertThat(attr.getConfigurationTransition()).isEqualTo(SPLIT);
+ assertTrue(attr.hasSplitConfigurationTransition());
+ assertThat(attr.getSplitTransition(null)).isEqualTo(splitTransition);
+ }
+
+ @Test
+ public void testSplitTransitionProvider() throws Exception {
+ TestSplitTransitionProvider splitTransitionProvider = new TestSplitTransitionProvider();
+ Attribute attr =
+ attr("foo", LABEL).cfg(splitTransitionProvider).allowedFileTypes().build();
+ assertThat(attr.getConfigurationTransition()).isEqualTo(SPLIT);
+ assertTrue(attr.hasSplitConfigurationTransition());
+ assertTrue(attr.getSplitTransition(null) instanceof TestSplitTransition);
+ }
+
+ @Test
+ public void testHostTransition() throws Exception {
+ Attribute attr = attr("foo", LABEL).cfg(HOST).allowedFileTypes().build();
+ assertThat(attr.getConfigurationTransition()).isEqualTo(HOST);
+ assertFalse(attr.hasSplitConfigurationTransition());
+ }
+
+ private static class TestSplitTransition implements SplitTransition<BuildOptions> {
+ @Override
+ public boolean defaultsToSelf() {
+ return true;
+ }
+
+ @Override
+ public List<BuildOptions> split(BuildOptions buildOptions) {
+ return ImmutableList.of(buildOptions.clone(), buildOptions.clone());
+ }
+ }
+
+ private static class TestSplitTransitionProvider implements SplitTransitionProvider {
+ @Override
+ public SplitTransition<?> apply(Rule fromRule) {
+ return new TestSplitTransition();
+ }
+ }
}