Migrate the `JavaStarlarkApiTest.javaLibrary_exposesPluginsToStarlark` test to Starlark The test is removed from Bazel and added in `@rules_java` PiperOrigin-RevId: 738474383 Change-Id: Ib8ba611675bcb0ab12d9fbf6b1b00781eb15211e
diff --git a/java/test/common/rules/BUILD b/java/test/common/rules/BUILD index a97a3fb..e46aa94 100644 --- a/java/test/common/rules/BUILD +++ b/java/test/common/rules/BUILD
@@ -1,4 +1,5 @@ load(":java_binary_tests.bzl", "java_binary_tests") +load(":java_library_tests.bzl", "java_library_tests") load(":java_plugin_tests.bzl", "java_plugin_tests") load(":merge_attrs_tests.bzl", "merge_attrs_test_suite") @@ -7,3 +8,5 @@ java_binary_tests(name = "java_binary_tests") java_plugin_tests(name = "java_plugin_tests") + +java_library_tests(name = "java_library_tests")
diff --git a/java/test/common/rules/java_library_tests.bzl b/java/test/common/rules/java_library_tests.bzl new file mode 100644 index 0000000..fb8c9a7 --- /dev/null +++ b/java/test/common/rules/java_library_tests.bzl
@@ -0,0 +1,86 @@ +"""Tests for the java_library rule""" + +load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite") +load("@rules_testing//lib:util.bzl", "util") +load("//java:java_library.bzl", "java_library") +load("//java:java_plugin.bzl", "java_plugin") +load("//java/test/testutil:java_info_subject.bzl", "java_info_subject") + +def _test_exposes_plugins(name): + target_name = name + "/library" + util.helper_target( + java_library, + name = target_name + "/plugin_dep1", + srcs = ["A.java"], + data = ["depfile1.dat"], + ) + util.helper_target( + java_library, + name = target_name + "/plugin_dep2", + srcs = ["B.java"], + data = ["depfile2.dat"], + ) + util.helper_target( + java_plugin, + name = target_name + "/plugin", + srcs = ["AnnotationProcessor1.java"], + data = ["pluginfile1.dat"], + processor_class = "com.google.process.stuff", + deps = [target_name + "/plugin_dep1"], + ) + util.helper_target( + java_plugin, + name = target_name + "/apiplugin", + srcs = ["AnnotationProcessor2.java"], + data = ["pluginfile2.dat"], + generates_api = True, + processor_class = "com.google.process.apistuff", + deps = [target_name + "/plugin_dep2"], + ) + util.helper_target( + java_library, + name = target_name, + exported_plugins = [ + target_name + "/plugin", + target_name + "/apiplugin", + ], + ) + + analysis_test( + name = name, + impl = _test_exposes_plugins_impl, + target = target_name, + ) + +def _test_exposes_plugins_impl(env, target): + assert_plugin_data = java_info_subject.from_target(env, target).plugins() + assert_plugin_data.processor_classes().contains_exactly([ + "com.google.process.stuff", + "com.google.process.apistuff", + ]) + assert_plugin_data.processor_jars().contains_exactly([ + "{package}/lib{name}/plugin.jar", + "{package}/lib{name}/plugin_dep1.jar", + "{package}/lib{name}/apiplugin.jar", + "{package}/lib{name}/plugin_dep2.jar", + ]) + assert_plugin_data.processor_data().contains_exactly([ + "{package}/pluginfile1.dat", + "{package}/pluginfile2.dat", + ]) + + assert_api_plugin_data = java_info_subject.from_target(env, target).api_generating_plugins() + assert_api_plugin_data.processor_classes().contains_exactly(["com.google.process.apistuff"]) + assert_api_plugin_data.processor_jars().contains_exactly([ + "{package}/lib{name}/apiplugin.jar", + "{package}/lib{name}/plugin_dep2.jar", + ]) + assert_api_plugin_data.processor_data().contains_exactly(["{package}/pluginfile2.dat"]) + +def java_library_tests(name): + test_suite( + name = name, + tests = [ + _test_exposes_plugins, + ], + )
diff --git a/java/test/testutil/java_info_subject.bzl b/java/test/testutil/java_info_subject.bzl index b958097..a49963a 100644 --- a/java/test/testutil/java_info_subject.bzl +++ b/java/test/testutil/java_info_subject.bzl
@@ -13,6 +13,7 @@ compilation_args = lambda: _new_java_compilation_args_subject(self.actual, self.meta), compilation_info = lambda: _new_java_compilation_info_subject(self.actual, self.meta), plugins = lambda: _new_java_plugin_data_subject(self.actual.plugins, self.meta.derive("plugins")), + api_generating_plugins = lambda: _new_java_plugin_data_subject(self.actual.api_generating_plugins, self.meta.derive("api_generating_plugins")), is_binary = lambda: subjects.bool(getattr(java_info, "_is_binary", False), self.meta.derive("_is_binary")), has_attr = lambda a: subjects.bool(getattr(java_info, a, None) != None, meta = self.meta.derive("{} != None".format(a))).equals(True), cc_link_params_info = lambda: cc_info_subject.new_from_java_info(java_info, meta),