diff options
author | elenairina <elenairina@google.com> | 2017-07-11 16:51:56 +0200 |
---|---|---|
committer | László Csomor <laszlocsomor@google.com> | 2017-07-11 18:26:17 +0200 |
commit | ec9027911dda9074c27b2889b0dbb0db68d856bf (patch) | |
tree | 41485df52c7e55d81738e23e5ba880a725b0e639 /src/test/java/com/google/devtools/build | |
parent | 64a6c153fe3650d1c28b5f5b44dd41032f0c28cc (diff) |
Expose current java_toolchain target to Skylark.
This value can be passed in Skylark to java_common.compile#java_toolchain in
order to avoid incompatibility issues when the value of --java_toolchain uses a
different Java version.
PiperOrigin-RevId: 161528114
Diffstat (limited to 'src/test/java/com/google/devtools/build')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java index b16dd4e24e..a9b7685c74 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java @@ -637,6 +637,87 @@ public class JavaSkylarkApiTest extends BuildViewTestCase { assertThat(((String) skylarkClassObject.getValue("strict_java_deps"))).isEqualTo("error"); } + @Test + public void javaToolchainFlag_default() throws Exception { + writeBuildFileForJavaToolchain(); + scratch.file( + "foo/rule.bzl", + "result = provider()", + "def _impl(ctx):", + " return [result(java_toolchain_label=ctx.attr._java_toolchain.label)]", + "myrule = rule(", + " implementation=_impl,", + " fragments = ['java'],", + " attrs = { '_java_toolchain': java_common.java_toolchain_attr }", + ")" + ); + scratch.file( + "foo/BUILD", + "load(':rule.bzl', 'myrule')", + "myrule(name='myrule')" + ); + ConfiguredTarget configuredTarget = getConfiguredTarget("//foo:myrule"); + SkylarkClassObject skylarkClassObject = + configuredTarget.get(new SkylarkKey(Label.parseAbsolute("//foo:rule.bzl"), "result")); + Label javaToolchainLabel = ((Label) skylarkClassObject.getValue("java_toolchain_label")); + assertThat(javaToolchainLabel.toString()).endsWith("jdk:toolchain"); + } + + @Test + public void javaToolchainFlag_set() throws Exception { + writeBuildFileForJavaToolchain(); + scratch.file( + "foo/rule.bzl", + "result = provider()", + "def _impl(ctx):", + " return [result(java_toolchain_label=ctx.attr._java_toolchain.label)]", + "myrule = rule(", + " implementation=_impl,", + " fragments = ['java'],", + " attrs = { '_java_toolchain': java_common.java_toolchain_attr }", + ")" + ); + scratch.file( + "foo/BUILD", + "load(':rule.bzl', 'myrule')", + "myrule(name='myrule')" + ); + useConfiguration("--java_toolchain=//java/com/google/test:toolchain"); + ConfiguredTarget configuredTarget = getConfiguredTarget("//foo:myrule"); + SkylarkClassObject skylarkClassObject = + configuredTarget.get(new SkylarkKey(Label.parseAbsolute("//foo:rule.bzl"), "result")); + Label javaToolchainLabel = ((Label) skylarkClassObject.getValue("java_toolchain_label")); + assertThat(javaToolchainLabel.toString()).isEqualTo("//java/com/google/test:toolchain"); + } + + private void writeBuildFileForJavaToolchain() throws Exception { + scratch.file("java/com/google/test/turbine_canary_deploy.jar"); + scratch.file("java/com/google/test/tzdata.jar"); + scratch.overwriteFile( + "java/com/google/test/BUILD", + "java_toolchain(name = 'toolchain',", + " source_version = '6',", + " target_version = '6',", + " bootclasspath = ['rt.jar'],", + " extclasspath = ['ext/lib.jar'],", + " encoding = 'ISO-8859-1',", + " xlint = [ 'toto' ],", + " misc = [ '-Xmaxerrs 500' ],", + " compatible_javacopts = {", + " 'appengine': [ '-XDappengineCompatible' ],", + " 'android': [ '-XDandroidCompatible' ],", + " },", + " javac = [':javac_canary.jar'],", + " javabuilder = [':JavaBuilderCanary_deploy.jar'],", + " header_compiler = [':turbine_canary_deploy.jar'],", + " singlejar = ['SingleJar_deploy.jar'],", + " ijar = ['ijar'],", + " genclass = ['GenClass_deploy.jar'],", + " timezone_data = 'tzdata.jar',", + ")" + ); + } + private static boolean javaCompilationArgsHaveTheSameParent( JavaCompilationArgs args, JavaCompilationArgs otherArgs) { if (!nestedSetsOfArtifactHaveTheSameParent( |