aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar dbabkin <dbabkin@google.com>2017-12-04 06:10:10 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-04 06:11:43 -0800
commit934efbe0e574b0cf8440a8eaed9199cba888834b (patch)
tree61bce645364307e5072912342608f29ec1b1d7fe /src/test/java/com/google/devtools
parent8bd3c97d61e6992cc5fd32a50f63a02839fae205 (diff)
Expose some methods from JavaSkylarkApiProvider in JavaInfo
JavaSkylarkApiProvider will be deprecated soon and replaced by JavaInfo. Methods exposed: NestedSet<Artifact> getTransitiveSourceJars() NestedSet<Artifact> getTransitiveRuntimeDeps() NestedSet<Artifact> getTransitiveDeps() Also created helped method to eliminate all duplication code and refactored some methods with is. RELNOTES:none PiperOrigin-RevId: 177804645
Diffstat (limited to 'src/test/java/com/google/devtools')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java101
1 files changed, 98 insertions, 3 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 e3cc4b87e8..f5aac5caec 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
@@ -950,15 +950,110 @@ public class JavaSkylarkApiTest extends BuildViewTestCase {
scratch.file(
"foo/BUILD",
"load(':extension.bzl', 'my_rule')",
- "java_library(name = 'my_java_lib', srcs = ['java/A.java'])",
- "my_rule(name = 'my_skylark_rule', dep = ':my_java_lib')");
+ "java_library(name = 'my_java_lib_b', srcs = ['java/B.java'])",
+ "java_library(name = 'my_java_lib_a', srcs = ['java/A.java'] , deps = [':my_java_lib_b'])",
+ "my_rule(name = 'my_skylark_rule', dep = ':my_java_lib_a')");
assertNoEvents();
ConfiguredTarget myRuleTarget = getConfiguredTarget("//foo:my_skylark_rule");
Info info = myRuleTarget.get(
new SkylarkKey(Label.parseAbsolute("//foo:extension.bzl"), "result"));
@SuppressWarnings("unchecked") SkylarkList<Artifact> sourceJars =
(SkylarkList<Artifact>) (info.getValue("source_jars"));
- assertThat(prettyJarNames(sourceJars)).containsExactly("foo/libmy_java_lib-src.jar");
+ assertThat(prettyJarNames(sourceJars)).containsExactly("foo/libmy_java_lib_a-src.jar");
+
+ assertThat(prettyJarNames(sourceJars)).doesNotContain("foo/libmy_java_lib_b-src.jar");
+
+ }
+
+ @Test
+ public void testJavaInfoGetTransitiveSourceJars() throws Exception {
+ scratch.file(
+ "foo/extension.bzl",
+ "result = provider()",
+ "def _impl(ctx):",
+ " return [result(property = ctx.attr.dep[JavaInfo].transitive_source_jars)]",
+ "my_rule = rule(_impl, attrs = { 'dep' : attr.label() })");
+
+ scratch.file(
+ "foo/BUILD",
+ "load(':extension.bzl', 'my_rule')",
+ "java_library(name = 'my_java_lib_c', srcs = ['java/C.java'])",
+ "java_library(name = 'my_java_lib_b', srcs = ['java/B.java'], deps = [':my_java_lib_c'])",
+ "java_library(name = 'my_java_lib_a', srcs = ['java/A.java'], deps = [':my_java_lib_b'])",
+ "my_rule(name = 'my_skylark_rule', dep = ':my_java_lib_a')");
+ assertNoEvents();
+ ConfiguredTarget myRuleTarget = getConfiguredTarget("//foo:my_skylark_rule");
+ Info info =
+ myRuleTarget.get(new SkylarkKey(Label.parseAbsolute("//foo:extension.bzl"), "result"));
+
+ @SuppressWarnings("unchecked")
+ SkylarkNestedSet sourceJars = (SkylarkNestedSet) (info.getValue("property"));
+
+ assertThat(prettyJarNames(sourceJars.getSet(Artifact.class)))
+ .containsExactly(
+ "foo/libmy_java_lib_a-src.jar",
+ "foo/libmy_java_lib_b-src.jar",
+ "foo/libmy_java_lib_c-src.jar");
+ }
+
+ @Test
+ public void testJavaInfoGetTransitiveDeps() throws Exception {
+ scratch.file(
+ "foo/extension.bzl",
+ "result = provider()",
+ "def _impl(ctx):",
+ " return [result(property = ctx.attr.dep[JavaInfo].transitive_deps)]",
+ "my_rule = rule(_impl, attrs = { 'dep' : attr.label() })");
+
+ scratch.file(
+ "foo/BUILD",
+ "load(':extension.bzl', 'my_rule')",
+ "java_library(name = 'my_java_lib_c', srcs = ['java/C.java'])",
+ "java_library(name = 'my_java_lib_b', srcs = ['java/B.java'], deps = [':my_java_lib_c'])",
+ "java_library(name = 'my_java_lib_a', srcs = ['java/A.java'], deps = [':my_java_lib_b'])",
+ "my_rule(name = 'my_skylark_rule', dep = ':my_java_lib_a')");
+ assertNoEvents();
+ ConfiguredTarget myRuleTarget = getConfiguredTarget("//foo:my_skylark_rule");
+ Info info =
+ myRuleTarget.get(new SkylarkKey(Label.parseAbsolute("//foo:extension.bzl"), "result"));
+
+ @SuppressWarnings("unchecked")
+ SkylarkNestedSet sourceJars = (SkylarkNestedSet) (info.getValue("property"));
+
+ assertThat(prettyJarNames(sourceJars.getSet(Artifact.class)))
+ .containsExactly(
+ "foo/libmy_java_lib_a-hjar.jar",
+ "foo/libmy_java_lib_b-hjar.jar",
+ "foo/libmy_java_lib_c-hjar.jar");
+ }
+
+ @Test
+ public void testJavaInfoGetTransitiveRuntimeDeps() throws Exception {
+ scratch.file(
+ "foo/extension.bzl",
+ "result = provider()",
+ "def _impl(ctx):",
+ " return [result(property = ctx.attr.dep[JavaInfo].transitive_runtime_deps)]",
+ "my_rule = rule(_impl, attrs = { 'dep' : attr.label() })");
+
+ scratch.file(
+ "foo/BUILD",
+ "load(':extension.bzl', 'my_rule')",
+ "java_library(name = 'my_java_lib_c', srcs = ['java/C.java'])",
+ "java_library(name = 'my_java_lib_b', srcs = ['java/B.java'], deps = [':my_java_lib_c'])",
+ "java_library(name = 'my_java_lib_a', srcs = ['java/A.java'], deps = [':my_java_lib_b'])",
+ "my_rule(name = 'my_skylark_rule', dep = ':my_java_lib_a')");
+ assertNoEvents();
+ ConfiguredTarget myRuleTarget = getConfiguredTarget("//foo:my_skylark_rule");
+ Info info =
+ myRuleTarget.get(new SkylarkKey(Label.parseAbsolute("//foo:extension.bzl"), "result"));
+
+ @SuppressWarnings("unchecked")
+ SkylarkNestedSet sourceJars = (SkylarkNestedSet) (info.getValue("property"));
+
+ assertThat(prettyJarNames(sourceJars.getSet(Artifact.class)))
+ .containsExactly(
+ "foo/libmy_java_lib_a.jar", "foo/libmy_java_lib_b.jar", "foo/libmy_java_lib_c.jar");
}
@Test