aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/rules/config
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2017-09-01 00:55:14 +0200
committerGravatar Vladimir Moskva <vladmos@google.com>2017-09-01 12:28:51 +0200
commit7972a3db819897a3b89896d453b1e99756bd3ffc (patch)
tree0b8ad2bb089b788e6460f959204ea1f15788ab8e /src/test/java/com/google/devtools/build/lib/rules/config
parent8fb8a28bb4a91ff2f7a1d82935defa3473dfae2d (diff)
Expose ConfigFeatureFlagProvider to skylark
This will be used to create thin skylark rules to allow for select() on provider values, with xcode_config_alias's XcodeProperties to be the first. This is demonstrated in XcodeConfigTest. RELNOTES: None. PiperOrigin-RevId: 167204266
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules/config')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java
index 2ee5755c40..fbe81326ea 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java
@@ -19,10 +19,13 @@ import static com.google.common.truth.Truth.assertThat;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import com.google.common.testing.EqualsTester;
+import com.google.devtools.build.lib.analysis.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
+import com.google.devtools.build.lib.analysis.RuleConfiguredTarget;
import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
import com.google.devtools.build.lib.skylark.util.SkylarkTestCase;
+import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
import org.junit.Before;
import org.junit.Test;
@@ -80,6 +83,43 @@ public final class ConfigFeatureFlagTest extends SkylarkTestCase {
}
@Test
+ public void configFeatureFlagProvider_skylarkConstructor() throws Exception {
+ scratch.file(
+ "test/wrapper.bzl",
+ "def _flag_reading_wrapper_impl(ctx):",
+ " pass",
+ "flag_reading_wrapper = rule(",
+ " implementation = _flag_reading_wrapper_impl,",
+ " attrs = {'flag': attr.label()},",
+ ")",
+ "def _flag_propagating_wrapper_impl(ctx):",
+ " return struct(providers = [config_common.FeatureFlagInfo(value='hello')])",
+ "flag_propagating_wrapper = rule(",
+ " implementation = _flag_propagating_wrapper_impl,",
+ ")");
+ scratch.file(
+ "test/BUILD",
+ "load(':wrapper.bzl', 'flag_propagating_wrapper')",
+ "flag_propagating_wrapper(",
+ " name = 'propagator',",
+ ")",
+ "config_setting(name = 'hello_setting',",
+ " flag_values = {':propagator': 'hello'})",
+ "genrule(",
+ " name = 'gen',",
+ " srcs = [],",
+ " outs = ['out'],",
+ " cmd = select({",
+ " ':hello_setting': 'hello',",
+ " '//conditions:default': 'error'",
+ " }))");
+
+ ConfiguredAttributeMapper attributeMapper = ConfiguredAttributeMapper.of(
+ (RuleConfiguredTarget) getConfiguredTarget("//test:gen"));
+ assertThat(attributeMapper.get("cmd", Type.STRING)).isEqualTo("hello");
+ }
+
+ @Test
public void configFeatureFlagProvider_valueIsAccessibleFromSkylark() throws Exception {
scratch.file(
"test/wrapper.bzl",