aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/analysis/config
diff options
context:
space:
mode:
authorGravatar Greg Estren <gregce@google.com>2015-11-19 19:39:50 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-11-20 09:17:25 +0000
commit4f3b2b30d0834016302c48ea52d39708c7f01eab (patch)
tree6f672a5cb98a4129645afd3f4810e3527c66f937 /src/test/java/com/google/devtools/build/lib/analysis/config
parent9d5ab0beda873a15ec6fe589a1d5cd30e7fa9e72 (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.java29
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);
+ }
}