aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com
diff options
context:
space:
mode:
authorGravatar dbabkin <dbabkin@google.com>2018-01-16 02:30:04 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-16 02:31:23 -0800
commit5bd53cb609480ca896ca2d011f415b424c63ce63 (patch)
treea498f1ad057795c230adb6a7e538273dd8e648ec /src/test/java/com
parent68371172ae9012a1b368d05c4a0d6483812fcd42 (diff)
Create function createJavaInfo with new API. Implement JavaSourceJarsProvider.
Added tests for checking JavaSourceJarsProvider state. All other providers will be implemented in next CLs. previous CL with JavaCompilationArgsProvider implementation is https://github.com/bazelbuild/bazel/commit/32dff21d00ad7d1bdf50e8761d675a6e7e002de9 RELNOTES:none PiperOrigin-RevId: 182028182
Diffstat (limited to 'src/test/java/com')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java220
1 files changed, 212 insertions, 8 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 646f8f42cd..68b36082e9 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
@@ -1515,15 +1515,8 @@ public class JavaSkylarkApiTest extends BuildViewTestCase {
")");
assertNoEvents();
- ConfiguredTarget myRuleTarget = getConfiguredTarget("//foo:my_skylark_rule");
- Info info =
- myRuleTarget.get(new SkylarkKey(Label.parseAbsolute("//foo:extension.bzl"), "result"));
-
- @SuppressWarnings("unchecked")
- JavaInfo javaInfo = (JavaInfo) info.getValue("property");
-
JavaCompilationArgsProvider javaCompilationArgsProvider =
- javaInfo.getProvider(JavaCompilationArgsProvider.class);
+ fetchJavaInfo().getProvider(JavaCompilationArgsProvider.class);
assertThat(
@@ -1809,6 +1802,217 @@ public class JavaSkylarkApiTest extends BuildViewTestCase {
.containsExactly("foo/my_skylark_rule_lib.jar", "foo/libmy_java_lib_direct-hjar.jar");
}
+ @Test
+ public void testJavaInfoJavaSourceJarsProviderWithSourceJars() throws Exception {
+ scratch.file(
+ "foo/extension.bzl",
+ "result = provider()",
+ "def _impl(ctx):",
+ " javaInfo = JavaInfo(",
+ " output_jar = ctx.file.output_jar,",
+ " use_ijar = False,",
+ " source_jars = ctx.files.source_jars",
+ " )",
+ " return [result(property = javaInfo)]",
+ "my_rule = rule(",
+ " implementation = _impl,",
+ " attrs = {",
+ " 'dep' : attr.label_list(), ",
+ " 'output_jar' : attr.label(allow_single_file=True), ",
+ " 'source_jars' : attr.label_list(allow_files=['.jar']),",
+ " }",
+ ")");
+
+ scratch.file(
+ "foo/BUILD",
+ "load(':extension.bzl', 'my_rule')",
+ "java_library(name = 'my_java_lib_direct', srcs = ['java/A.java'])",
+ "my_rule(name = 'my_skylark_rule',",
+ " output_jar = 'my_skylark_rule_lib.jar',",
+ " dep = [':my_java_lib_direct'],",
+ " source_jars = ['my_skylark_rule_src.jar']",
+ ")");
+ assertNoEvents();
+
+ JavaSourceJarsProvider sourceJarsProvider =
+ fetchJavaInfo().getProvider(JavaSourceJarsProvider.class);
+
+ assertThat(prettyJarNames(sourceJarsProvider.getSourceJars()))
+ .containsExactly("foo/my_skylark_rule_src.jar");
+
+ assertThat(prettyJarNames(sourceJarsProvider.getTransitiveSourceJars()))
+ .containsExactly("foo/my_skylark_rule_src.jar");
+ }
+
+ @Test
+ public void testJavaInfoJavaSourceJarsProviderWithDeps() throws Exception {
+ scratch.file(
+ "foo/extension.bzl",
+ "result = provider()",
+ "def _impl(ctx):",
+ " dp = [dep[java_common.provider] for dep in ctx.attr.dep]",
+ " javaInfo = JavaInfo(",
+ " output_jar = ctx.file.output_jar,",
+ " use_ijar = False,",
+ " deps = dp",
+ " )",
+ " return [result(property = javaInfo)]",
+ "my_rule = rule(",
+ " implementation = _impl,",
+ " attrs = {",
+ " 'dep' : attr.label_list(), ",
+ " 'output_jar' : attr.label(allow_single_file=True), ",
+ " }",
+ ")");
+
+ scratch.file(
+ "foo/BUILD",
+ "load(':extension.bzl', 'my_rule')",
+ "java_library(name = 'my_java_lib_direct', srcs = ['java/A.java'])",
+ "my_rule(name = 'my_skylark_rule',",
+ " output_jar = 'my_skylark_rule_lib.jar',",
+ " dep = [':my_java_lib_direct']",
+ ")");
+ assertNoEvents();
+
+ JavaSourceJarsProvider sourceJarsProvider =
+ fetchJavaInfo().getProvider(JavaSourceJarsProvider.class);
+
+ assertThat(prettyJarNames(sourceJarsProvider.getSourceJars())).isEmpty();
+
+ assertThat(prettyJarNames(sourceJarsProvider.getTransitiveSourceJars()))
+ .containsExactly("foo/libmy_java_lib_direct-src.jar");
+ }
+
+ @Test
+ public void testJavaInfoJavaSourceJarsProviderAndRuntimeDeps() throws Exception {
+ scratch.file(
+ "foo/extension.bzl",
+ "result = provider()",
+ "def _impl(ctx):",
+ " dp = [dep[java_common.provider] for dep in ctx.attr.dep]",
+ " javaInfo = JavaInfo(",
+ " output_jar = ctx.file.output_jar,",
+ " use_ijar = False,",
+ " runtime_deps = dp",
+ " )",
+ " return [result(property = javaInfo)]",
+ "my_rule = rule(",
+ " implementation = _impl,",
+ " attrs = {",
+ " 'dep' : attr.label_list(), ",
+ " 'output_jar' : attr.label(allow_single_file=True), ",
+ " }",
+ ")");
+
+ scratch.file(
+ "foo/BUILD",
+ "load(':extension.bzl', 'my_rule')",
+ "java_library(name = 'my_java_lib_direct', srcs = ['java/A.java'])",
+ "my_rule(name = 'my_skylark_rule',",
+ " output_jar = 'my_skylark_rule_lib.jar',",
+ " dep = [':my_java_lib_direct']",
+ ")");
+ assertNoEvents();
+
+ JavaSourceJarsProvider sourceJarsProvider =
+ fetchJavaInfo().getProvider(JavaSourceJarsProvider.class);
+
+ assertThat(prettyJarNames(sourceJarsProvider.getSourceJars())).isEmpty();
+
+ assertThat(prettyJarNames(sourceJarsProvider.getTransitiveSourceJars()))
+ .containsExactly("foo/libmy_java_lib_direct-src.jar");
+ }
+
+ @Test
+ public void testCreateJavaInfoWithJavaSourceJarsProviderAndTransitiveDeps() throws Exception {
+ scratch.file(
+ "foo/extension.bzl",
+ "result = provider()",
+ "def _impl(ctx):",
+ " dp = [dep[java_common.provider] for dep in ctx.attr.dep]",
+ " javaInfo = JavaInfo(",
+ " output_jar = ctx.file.output_jar,",
+ " use_ijar = False,",
+ " deps = dp",
+ " )",
+ " return [result(property = javaInfo)]",
+ "my_rule = rule(",
+ " implementation = _impl,",
+ " attrs = {",
+ " 'dep' : attr.label_list(), ",
+ " 'output_jar' : attr.label(allow_single_file=True), ",
+ " }",
+ ")");
+
+ scratch.file(
+ "foo/BUILD",
+ "load(':extension.bzl', 'my_rule')",
+ "java_library(name = 'my_java_lib_transitive', srcs = ['java/B.java'])",
+ "java_library(name = 'my_java_lib_direct',",
+ " srcs = ['java/A.java'],",
+ " deps = [':my_java_lib_transitive'])",
+ "my_rule(name = 'my_skylark_rule',",
+ " output_jar = 'my_skylark_rule_lib.jar',",
+ " dep = [':my_java_lib_direct']",
+ ")");
+ assertNoEvents();
+
+ JavaSourceJarsProvider sourceJarsProvider =
+ fetchJavaInfo().getProvider(JavaSourceJarsProvider.class);
+
+ assertThat(prettyJarNames(sourceJarsProvider.getSourceJars())).isEmpty();
+
+ assertThat(prettyJarNames(sourceJarsProvider.getTransitiveSourceJars()))
+ .containsExactly(
+ "foo/libmy_java_lib_direct-src.jar", "foo/libmy_java_lib_transitive-src.jar");
+ }
+
+ @Test
+ public void testCreateJavaInfoWithJavaSourceJarsProviderAndTransitiveRuntimeDeps()
+ throws Exception {
+ scratch.file(
+ "foo/extension.bzl",
+ "result = provider()",
+ "def _impl(ctx):",
+ " dp = [dep[java_common.provider] for dep in ctx.attr.dep]",
+ " javaInfo = JavaInfo(",
+ " output_jar = ctx.file.output_jar,",
+ " use_ijar = False,",
+ " runtime_deps = dp",
+ " )",
+ " return [result(property = javaInfo)]",
+ "my_rule = rule(",
+ " implementation = _impl,",
+ " attrs = {",
+ " 'dep' : attr.label_list(), ",
+ " 'output_jar' : attr.label(allow_single_file=True), ",
+ " }",
+ ")");
+
+ scratch.file(
+ "foo/BUILD",
+ "load(':extension.bzl', 'my_rule')",
+ "java_library(name = 'my_java_lib_transitive', srcs = ['java/B.java'])",
+ "java_library(name = 'my_java_lib_direct',",
+ " srcs = ['java/A.java'],",
+ " deps = [':my_java_lib_transitive'])",
+ "my_rule(name = 'my_skylark_rule',",
+ " output_jar = 'my_skylark_rule_lib.jar',",
+ " dep = [':my_java_lib_direct']",
+ ")");
+ assertNoEvents();
+
+ JavaSourceJarsProvider sourceJarsProvider =
+ fetchJavaInfo().getProvider(JavaSourceJarsProvider.class);
+
+ assertThat(prettyJarNames(sourceJarsProvider.getSourceJars())).isEmpty();
+
+ assertThat(prettyJarNames(sourceJarsProvider.getTransitiveSourceJars()))
+ .containsExactly(
+ "foo/libmy_java_lib_direct-src.jar", "foo/libmy_java_lib_transitive-src.jar");
+ }
+
private JavaInfo fetchJavaInfo() throws LabelSyntaxException {
ConfiguredTarget myRuleTarget = getConfiguredTarget("//foo:my_skylark_rule");
Info info =