Migrate the `JavaStarlarkApiTest.javaPlugin_exposesJavaOutputs` test to Starlark

The test is removed from Bazel and added in rules_java

PiperOrigin-RevId: 734673271
Change-Id: Ie77c81ffe89fc95f7fe187fbd49063450ea06e2a
diff --git a/java/test/common/BUILD b/java/test/common/BUILD
index c9cd066..5305a01 100644
--- a/java/test/common/BUILD
+++ b/java/test/common/BUILD
@@ -1,6 +1,9 @@
 load(":java_common_tests.bzl", "java_common_tests")
 load(":java_info_tests.bzl", "java_info_tests")
+load(":java_plugin_info_tests.bzl", "java_plugin_info_tests")
 
 java_common_tests(name = "java_common_tests")
 
 java_info_tests(name = "java_info_tests")
+
+java_plugin_info_tests(name = "java_plugin_info_tests")
diff --git a/java/test/common/java_plugin_info_tests.bzl b/java/test/common/java_plugin_info_tests.bzl
new file mode 100644
index 0000000..381a6d4
--- /dev/null
+++ b/java/test/common/java_plugin_info_tests.bzl
@@ -0,0 +1,43 @@
+"""Tests for the JavaPluginInfo provider"""
+
+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_plugin_info_subject")
+
+def _test_exposes_java_outputs(name):
+    util.helper_target(
+        java_library,
+        name = name + "/lib",
+        srcs = ["Lib.java"],
+    )
+    util.helper_target(
+        java_plugin,
+        name = name + "/dep",
+        srcs = ["Dep.java"],
+        deps = [name + "/lib"],
+    )
+
+    analysis_test(
+        name = name,
+        impl = _test_exposes_java_outputs_impl,
+        target = name + "/dep",
+    )
+
+def _test_exposes_java_outputs_impl(env, target):
+    assert_output = java_plugin_info_subject.from_target(env, target).java_outputs().singleton()
+
+    assert_output.class_jar().short_path_equals("{package}/lib{name}.jar")
+    assert_output.compile_jar().short_path_equals("{package}/lib{name}-hjar.jar")
+    assert_output.source_jars().contains_exactly(["{package}/lib{name}-src.jar"])
+    assert_output.jdeps().short_path_equals("{package}/lib{name}.jdeps")
+    assert_output.compile_jdeps().short_path_equals("{package}/lib{name}-hjar.jdeps")
+
+def java_plugin_info_tests(name):
+    test_suite(
+        name = name,
+        tests = [
+            _test_exposes_java_outputs,
+        ],
+    )
diff --git a/java/test/testutil/java_info_subject.bzl b/java/test/testutil/java_info_subject.bzl
index 8b74925..de2d218 100644
--- a/java/test/testutil/java_info_subject.bzl
+++ b/java/test/testutil/java_info_subject.bzl
@@ -3,6 +3,7 @@
 load("@rules_testing//lib:truth.bzl", "subjects", "truth")
 load("//java/common:java_common.bzl", "java_common")
 load("//java/common:java_info.bzl", "JavaInfo")
+load("//java/common:java_plugin_info.bzl", "JavaPluginInfo")
 load(":cc_info_subject.bzl", "cc_info_subject")
 
 def _new_java_info_subject(java_info, meta):
@@ -136,6 +137,21 @@
     )
     return public
 
+def _new_java_plugin_info_subject(java_plugin_info, meta):
+    self = struct(actual = java_plugin_info, meta = meta.derive("JavaPluginInfo"))
+    public = struct(
+        java_outputs = lambda: _new_java_outputs_collection_subject(self.actual.java_outputs, meta.derive("java_outputs")),
+    )
+    return public
+
+def _java_plugin_info_subject_from_target(env, target):
+    return _new_java_plugin_info_subject(target[JavaPluginInfo], meta = truth.expect(env).meta.derive(
+        format_str_kwargs = {
+            "name": target.label.name,
+            "package": target.label.package,
+        },
+    ))
+
 def _get_singleton(seq):
     if len(seq) != 1:
         fail("expected singleton, got:", seq)
@@ -145,3 +161,8 @@
     new = _new_java_info_subject,
     from_target = _java_info_subject_from_target,
 )
+
+java_plugin_info_subject = struct(
+    new = _new_java_plugin_info_subject,
+    from_target = _java_plugin_info_subject_from_target,
+)