diff options
author | ajmichael <ajmichael@google.com> | 2017-05-31 22:34:34 +0200 |
---|---|---|
committer | László Csomor <laszlocsomor@google.com> | 2017-06-01 14:08:29 +0200 |
commit | 22d05ebc9f4ce3194233e7dfd12bf079ce88ee07 (patch) | |
tree | eb75d09cc0662bfd744bd76d25b533c57df0e5d5 /src/test/java/com/google/devtools/build | |
parent | 7fa955b83d86d8f03d339c58446806b6e0e51bf1 (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')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapperTest.java | 22 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java | 34 |
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")); + } } |