diff options
author | elenairina <elenairina@google.com> | 2017-07-04 08:30:30 -0400 |
---|---|---|
committer | John Cater <jcater@google.com> | 2017-07-05 10:57:59 -0400 |
commit | d381624d33d6548daa545be4c038279ee226394d (patch) | |
tree | 14106be533d891ad264163aef448df5caf3e967b /src/test/java/com/google/devtools/build | |
parent | 94530f57ebb72bb952217aae0351474589ce6d97 (diff) |
Exposing the value of strict_java_deps flag to Skylark.
Fixes #3295.
Users requested this [1] and it is useful for example to pass it as a value to java_common.compile#strict_deps.
[1] https://stackoverflow.com/questions/44827704/bazel-can-a-skylark-action-read-a-command-line-flag-strict-java-deps
PiperOrigin-RevId: 160886151
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 | 47 |
1 files changed, 47 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 45b2292ee8..f594ca2cfd 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 @@ -565,6 +565,53 @@ public class JavaSkylarkApiTest extends BuildViewTestCase { assertThat(directJars).containsExactly("foo/liba.jar", "foo/libb.jar"); } + @Test + public void strictJavaDepsFlagExposed_default() throws Exception { + scratch.file( + "foo/rule.bzl", + "result = provider()", + "def _impl(ctx):", + " return [result(strict_java_deps=ctx.fragments.java.strict_java_deps)]", + "myrule = rule(", + " implementation=_impl,", + " fragments = ['java']", + ")" + ); + 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")); + assertThat(((String) skylarkClassObject.getValue("strict_java_deps"))).isEqualTo("default"); + } + + @Test + public void strictJavaDepsFlagExposed_error() throws Exception { + scratch.file( + "foo/rule.bzl", + "result = provider()", + "def _impl(ctx):", + " return [result(strict_java_deps=ctx.fragments.java.strict_java_deps)]", + "myrule = rule(", + " implementation=_impl,", + " fragments = ['java']", + ")" + ); + scratch.file( + "foo/BUILD", + "load(':rule.bzl', 'myrule')", + "myrule(name='myrule')" + ); + useConfiguration("--strict_java_deps=ERROR"); + ConfiguredTarget configuredTarget = getConfiguredTarget("//foo:myrule"); + SkylarkClassObject skylarkClassObject = + configuredTarget.get(new SkylarkKey(Label.parseAbsolute("//foo:rule.bzl"), "result")); + assertThat(((String) skylarkClassObject.getValue("strict_java_deps"))).isEqualTo("error"); + } + private static boolean javaCompilationArgsHaveTheSameParent( JavaCompilationArgs args, JavaCompilationArgs otherArgs) { if (!nestedSetsOfArtifactHaveTheSameParent( |