aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar ajmichael <ajmichael@google.com>2017-05-31 22:34:34 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-06-01 14:08:29 +0200
commit22d05ebc9f4ce3194233e7dfd12bf079ce88ee07 (patch)
treeeb75d09cc0662bfd744bd76d25b533c57df0e5d5 /src/test/java/com/google/devtools/build/lib
parent7fa955b83d86d8f03d339c58446806b6e0e51bf1 (diff)
Add //external:has_androidsdk config_setting.
This will be used to add some tests and targets to the Bazel codebase that build and run successfully when android_sdk_repository is in the WORKSPACE and silently skip if it is not. Example deps of a library that links against dx.jar: ``` deps = select({ "//external:has_androidsdk": ["//external:android/dx_jar_import"], "//conditions:default": [], }), ``` Also adds tests that config_setting works as expected when propagated through an alias or bind rule. RELNOTES: None PiperOrigin-RevId: 157627472
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapperTest.java22
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java34
2 files changed, 56 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapperTest.java b/src/test/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapperTest.java
index bff9d57b0e..72bef74866 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapperTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapperTest.java
@@ -265,4 +265,26 @@ public class ConfiguredAttributeMapperTest extends BuildViewTestCase {
assertThat(getMapper("//a:lib").isAttributeValueExplicitlySpecified("linkstamp")).isFalse();
assertThat(getMapper("//a:lib").get("linkstamp", BuildType.LABEL)).isNull();
}
+
+ @Test
+ public void testAliasedConfigSetting() throws Exception {
+ writeConfigRules();
+ scratch.file(
+ "a/BUILD",
+ "alias(",
+ " name = 'aliased_a',",
+ " actual = '//conditions:a',",
+ ")",
+ "genrule(",
+ " name = 'gen',",
+ " srcs = [],",
+ " outs = ['out'],",
+ " cmd = '',",
+ " message = select({",
+ " ':aliased_a': 'defined message',",
+ " '//conditions:default': None,",
+ " }))");
+ useConfiguration("--define", "mode=a");
+ assertThat(getMapper("//a:gen").get("message", Type.STRING)).isEqualTo("defined message");
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java b/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
index 0dd6dfb787..6f32b7d72e 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
@@ -15,7 +15,10 @@ package com.google.devtools.build.lib.packages;
import static com.google.common.truth.Truth.assertThat;
+import com.google.devtools.build.lib.analysis.ConfiguredAttributeMapper;
+import com.google.devtools.build.lib.analysis.RuleConfiguredTarget;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
import org.junit.Before;
@@ -73,4 +76,35 @@ public class ExternalPackageTest extends BuildViewTestCase {
assertThat(getTarget("//external:my_rule").getTargetKind())
.isEqualTo("new_local_repository rule");
}
+
+ @Test
+ public void testBindToConfigSetting() throws Exception {
+ FileSystemUtils.appendIsoLatin1(
+ workspacePath,
+ "bind(",
+ " name = 'condition',",
+ " actual = '//:setting',",
+ ")");
+ FileSystemUtils.writeIsoLatin1(
+ rootDirectory.getRelative("BUILD"),
+ "config_setting(",
+ " name = 'setting',",
+ " values = {'define': 'foo=bar'},",
+ ")",
+ "java_library(",
+ " name = 'a',",
+ " runtime_deps = select({",
+ " '//external:condition': [':b'],",
+ " '//conditions:default': [':c'],",
+ " }),",
+ ")",
+ "java_library(name = 'b', srcs = [])",
+ "java_library(name = 'c', srcs = [])");
+ invalidatePackages();
+ useConfiguration("--define", "foo=bar");
+ ConfiguredAttributeMapper configuredAttributeMapper =
+ ConfiguredAttributeMapper.of((RuleConfiguredTarget) getConfiguredTarget("//:a"));
+ assertThat(configuredAttributeMapper.get("runtime_deps", BuildType.LABEL_LIST))
+ .containsExactly(Label.parseAbsolute("//:b"));
+ }
}