diff options
author | 2017-09-01 00:55:14 +0200 | |
---|---|---|
committer | 2017-09-01 12:28:51 +0200 | |
commit | 7972a3db819897a3b89896d453b1e99756bd3ffc (patch) | |
tree | 0b8ad2bb089b788e6460f959204ea1f15788ab8e /src/test/java/com/google/devtools/build/lib/rules/config | |
parent | 8fb8a28bb4a91ff2f7a1d82935defa3473dfae2d (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.java | 40 |
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", |