Migrate the `JavaStarlarkApiTest.testJavaCommonCompileExposesAnnotationProcessingInfo` test to Starlark The test is removed from Bazel and added in `@rules_java` PiperOrigin-RevId: 738300505 Change-Id: I6ec757c10f847208ae134bdddf09bde6a4537de8
diff --git a/java/test/common/java_common_tests.bzl b/java/test/common/java_common_tests.bzl index e60ea0a..140e4ef 100644 --- a/java/test/common/java_common_tests.bzl +++ b/java/test/common/java_common_tests.bzl
@@ -4,6 +4,7 @@ load("@rules_testing//lib:truth.bzl", "matching") load("@rules_testing//lib:util.bzl", "util") load("//java:java_library.bzl", "java_library") +load("//java:java_plugin.bzl", "java_plugin") load("//java/common:java_common.bzl", "java_common") load("//java/common:java_info.bzl", "JavaInfo") load("//java/common:java_plugin_info.bzl", "JavaPluginInfo") @@ -349,6 +350,79 @@ matching.file_basename_equals("custom-src.jar"), ]).in_order() +def _test_compile_exposes_annotation_processing_info(name): + _test_annotation_processing_info_is_starlark_accessible(name, custom_library) + +def _test_annotation_processing_info_is_starlark_accessible(name, to_be_processed_rule_class): + target_name = name + "/to_be_processed" + util.helper_target( + to_be_processed_rule_class, + name = target_name, + plugins = [target_name + "/plugin"], + srcs = ["ToBeProcessed.java"], + deps = [target_name + "/dep"], + exports = [target_name + "/export"], + ) + util.helper_target( + java_library, + name = target_name + "/plugin_dep", + srcs = ["Processordep.java"], + ) + util.helper_target( + java_plugin, + name = target_name + "/plugin", + srcs = ["AnnotationProcessor.java"], + processor_class = "com.google.process.stuff", + deps = [target_name + "/plugin_dep"], + ) + util.helper_target( + java_library, + name = target_name + "/dep", + srcs = ["Dep.java"], + plugins = [target_name + "/plugin"], + ) + util.helper_target( + java_library, + name = target_name + "/export", + srcs = ["Export.java"], + plugins = [target_name + "/plugin"], + ) + + analysis_test( + name = name, + impl = _test_annotation_processing_info_is_starlark_accessible_impl, + target = target_name, + ) + +def _test_annotation_processing_info_is_starlark_accessible_impl(env, target): + depj = target[JavaInfo] + result = struct( + enabled = depj.annotation_processing.enabled, + class_jar = depj.outputs.jars[0].generated_class_jar, + source_jar = depj.outputs.jars[0].generated_source_jar, + old_class_jar = depj.annotation_processing.class_jar, + old_source_jar = depj.annotation_processing.source_jar, + processor_classpath = depj.annotation_processing.processor_classpath, + processor_classnames = depj.annotation_processing.processor_classnames, + transitive_class_jars = depj.annotation_processing.transitive_class_jars, + transitive_source_jars = depj.annotation_processing.transitive_source_jars, + ) + + env.expect.that_bool(result.enabled).equals(True) + env.expect.that_file(result.class_jar).equals(result.old_class_jar) + env.expect.that_file(result.source_jar).equals(result.old_source_jar) + env.expect.that_collection(result.processor_classnames).contains_exactly([ + "com.google.process.stuff", + ]) + env.expect.that_collection(result.processor_classpath.to_list()).contains_exactly_predicates([ + matching.file_basename_equals("plugin.jar"), + matching.file_basename_equals("plugin_dep.jar"), + ]) + env.expect.that_collection(result.transitive_class_jars.to_list()).has_size(3) + env.expect.that_collection(result.transitive_class_jars.to_list()).contains(result.class_jar) + env.expect.that_collection(result.transitive_source_jars.to_list()).has_size(3) + env.expect.that_collection(result.transitive_source_jars.to_list()).contains(result.source_jar) + def java_common_tests(name): test_suite( name = name, @@ -364,5 +438,6 @@ _test_exposes_java_info_as_provider, _test_compile_exposes_outputs_provider, _test_compile_sets_runtime_deps, + _test_compile_exposes_annotation_processing_info, ], )
diff --git a/java/test/testutil/rules/custom_library.bzl b/java/test/testutil/rules/custom_library.bzl index ff30c25..01bfb87 100644 --- a/java/test/testutil/rules/custom_library.bzl +++ b/java/test/testutil/rules/custom_library.bzl
@@ -2,6 +2,7 @@ load("//java/common:java_common.bzl", "java_common") load("//java/common:java_info.bzl", "JavaInfo") +load("//java/common:java_plugin_info.bzl", "JavaPluginInfo") load("//java/common:java_semantics.bzl", "semantics") def _custom_library_impl(ctx): @@ -14,6 +15,8 @@ output = output_jar, deps = deps, runtime_deps = runtime_deps, + exports = [e[JavaInfo] for e in ctx.attr.exports], + plugins = [p[JavaPluginInfo] for p in ctx.attr.plugins], java_toolchain = semantics.find_java_toolchain(ctx), ) return [DefaultInfo(files = depset([output_jar])), compilation_provider] @@ -24,6 +27,8 @@ "srcs": attr.label_list(allow_files = [".java"]), "deps": attr.label_list(), "runtime_deps": attr.label_list(), + "exports": attr.label_list(), + "plugins": attr.label_list(), }, toolchains = [semantics.JAVA_TOOLCHAIN_TYPE], fragments = ["java"],