diff options
author | Greg Estren <gregce@google.com> | 2015-11-19 19:39:50 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2015-11-20 09:17:25 +0000 |
commit | 4f3b2b30d0834016302c48ea52d39708c7f01eab (patch) | |
tree | 6f672a5cb98a4129645afd3f4810e3527c66f937 /src/test/java/com/google/devtools/build/lib/analysis/config | |
parent | 9d5ab0beda873a15ec6fe589a1d5cd30e7fa9e72 (diff) |
Add dynamic config support for config_setting rules.
Specifically, given:
config_setting(
name = 'foo',
values = {'copts': '-DABC'})
this requires a dependency on the Cpp configuration fragment.
config_setting rules are unique in that this dependency comes
from string representations of option names.
--
MOS_MIGRATED_REVID=108268831
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/analysis/config')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/analysis/config/ConfigSettingTest.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/ConfigSettingTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/ConfigSettingTest.java index 5cbe70305e..c3ec6f33b3 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/config/ConfigSettingTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/config/ConfigSettingTest.java @@ -13,12 +13,22 @@ // limitations under the License. package com.google.devtools.build.lib.analysis.config; +import static com.google.common.truth.Truth.assertThat; +import static com.google.devtools.build.lib.analysis.config.ConfigRuleClasses.ConfigSettingRule; + +import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.Constants; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.packages.Rule; +import com.google.devtools.build.lib.rules.cpp.CppConfiguration; +import com.google.devtools.build.lib.rules.java.Jvm; +import com.google.devtools.build.lib.rules.python.PythonConfiguration; import com.google.devtools.common.options.OptionsBase; import com.google.devtools.common.options.OptionsParser; +import java.util.Map; + /** * Tests for {@link ConfigSetting}. */ @@ -209,4 +219,23 @@ public class ConfigSettingTest extends BuildViewTestCase { "config_setting(name='cs', values={'crosstool_top': '" + crosstoolTop + "'})", "sh_library(name='a', srcs=['a.sh'], deps=select({':cs': []}))"); } + + public void testRequiredConfigFragmentMatcher() throws Exception { + scratch.file("test/BUILD", + "config_setting(", + " name = 'match',", + " values = {", + " 'copt': '-Dfoo',", + " 'javacopt': '-Dbar'", + " })"); + + Map<String, Class<? extends BuildConfiguration.Fragment>> map = ImmutableMap.of( + "copt", CppConfiguration.class, + "unused", PythonConfiguration.class, + "javacopt", Jvm.class + ); + assertThat( + ConfigSettingRule.requiresConfigurationFragments((Rule) getTarget("//test:match"), map)) + .containsExactly(CppConfiguration.class, Jvm.class); + } } |