diff options
author | 2017-12-04 06:10:10 -0800 | |
---|---|---|
committer | 2017-12-04 06:11:43 -0800 | |
commit | 934efbe0e574b0cf8440a8eaed9199cba888834b (patch) | |
tree | 61bce645364307e5072912342608f29ec1b1d7fe /src/test/java/com/google/devtools | |
parent | 8bd3c97d61e6992cc5fd32a50f63a02839fae205 (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.java | 101 |
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 |