Migrate the `JavaInfoStarlarkApiTest.buildHelperCreateJavaInfoWithPlugins` test to Starlark

The test is removed from Bazel and added in rules_java

PiperOrigin-RevId: 734610281
Change-Id: If41a8e2793d0a983538a892d4fe2ca0f4aa168c4
diff --git a/java/test/common/java_info_tests.bzl b/java/test/common/java_info_tests.bzl
index fbe5b93..224d763 100644
--- a/java/test/common/java_info_tests.bzl
+++ b/java/test/common/java_info_tests.bzl
@@ -679,6 +679,38 @@
 
     assert_java_info.plugins().processor_classes().contains_exactly(["com.google.process.stuff"])
 
+def _with_plugins_test(name):
+    target_name = name + "/my_starlark_rule"
+    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(
+        custom_java_info_rule,
+        name = target_name,
+        dep_exported_plugins = [target_name + "/plugin"],
+        output_jar = target_name + "/my_starlark_rule_lib.jar",
+    )
+
+    analysis_test(
+        name = name,
+        impl = _with_plugins_test_impl,
+        target = target_name,
+    )
+
+def _with_plugins_test_impl(env, target):
+    assert_java_info = java_info_subject.from_target(env, target)
+
+    assert_java_info.plugins().processor_classes().contains_exactly(["com.google.process.stuff"])
+
 def java_info_tests(name):
     test_suite(
         name = name,
@@ -702,5 +734,6 @@
             _with_transitive_exports_test,
             _with_transitive_deps_and_exports_test,
             _with_plugins_via_exports_test,
+            _with_plugins_test,
         ],
     )
diff --git a/java/test/testutil/rules/custom_java_info_rule.bzl b/java/test/testutil/rules/custom_java_info_rule.bzl
index 215c935..c8138d2 100644
--- a/java/test/testutil/rules/custom_java_info_rule.bzl
+++ b/java/test/testutil/rules/custom_java_info_rule.bzl
@@ -3,6 +3,7 @@
 load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
 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 _impl(ctx):
@@ -10,6 +11,7 @@
     dp = [dep[JavaInfo] for dep in ctx.attr.dep]
     dp_runtime = [dep[JavaInfo] for dep in ctx.attr.dep_runtime]
     dp_exports = [dep[java_common.provider] for dep in ctx.attr.dep_exports]
+    dp_exported_plugins = [dep[JavaPluginInfo] for dep in ctx.attr.dep_exported_plugins]
     source_jar = java_common.pack_sources(
         ctx.actions,
         output_source_jar = ctx.actions.declare_file(ctx.outputs.output_jar.basename[:-4] + "-src.jar", sibling = ctx.outputs.output_jar),
@@ -34,6 +36,7 @@
             deps = dp,
             runtime_deps = dp_runtime,
             exports = dp_exports,
+            exported_plugins = dp_exported_plugins,
             native_libraries = dp_libs,
             neverlink = ctx.attr.neverlink,
         ),
@@ -48,6 +51,7 @@
         "dep": attr.label_list(),
         "dep_runtime": attr.label_list(),
         "dep_exports": attr.label_list(),
+        "dep_exported_plugins": attr.label_list(),
         "cc_dep": attr.label_list(),
         "use_ijar": attr.bool(default = False),
         "neverlink": attr.bool(default = False),