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),