aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2017-07-04 08:30:30 -0400
committerGravatar John Cater <jcater@google.com>2017-07-05 10:57:59 -0400
commitd381624d33d6548daa545be4c038279ee226394d (patch)
tree14106be533d891ad264163aef448df5caf3e967b /src/test/java/com/google/devtools/build
parent94530f57ebb72bb952217aae0351474589ce6d97 (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.java47
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(