Migrate the `JavaStarlarkApiTest.testJavaRuntimeProviderJavaGenerated` test to Starlark

The test is removed from Bazel and added in `@rules_java`

PiperOrigin-RevId: 738381284
Change-Id: Ie15bbe60e85bba0261ca248a67c77d48014c76a5
diff --git a/java/test/testutil/java_runtime_info_subject.bzl b/java/test/testutil/java_runtime_info_subject.bzl
index 79ab2fc..ef5bdf9 100644
--- a/java/test/testutil/java_runtime_info_subject.bzl
+++ b/java/test/testutil/java_runtime_info_subject.bzl
@@ -1,6 +1,7 @@
 """Custom @rules_testing subject for the JavaRuntimeInfo provider"""
 
 load("@rules_testing//lib:truth.bzl", "subjects", "truth")
+load("@rules_testing//lib:util.bzl", "TestingAspectInfo")
 load("//java/common:java_common.bzl", "java_common")
 
 def _new_java_runtime_info_subject(java_runtime_info, meta):
@@ -38,6 +39,7 @@
             format_str_kwargs = {
                 "name": target.label.name,
                 "package": target.label.package,
+                "bindir": target[TestingAspectInfo].bin_path,
             },
         ),
     )
diff --git a/java/test/toolchains/java_runtime_tests.bzl b/java/test/toolchains/java_runtime_tests.bzl
index 2dfcbbd..2f2b86d 100644
--- a/java/test/toolchains/java_runtime_tests.bzl
+++ b/java/test/toolchains/java_runtime_tests.bzl
@@ -92,11 +92,61 @@
     assert_info.java_executable_exec_path().starts_with("{package}/foo/bar/bin/java")
     assert_info.java_executable_runfiles_path().starts_with("{package}/foo/bar/bin/java")
 
+def _test_with_generated_java_executable(name):
+    util.helper_target(
+        native.genrule,
+        name = name + "/gen",
+        cmd = "",
+        outs = ["foo/bar/bin/java"],
+        output_to_bindir = True,
+    )
+    util.helper_target(
+        java_runtime,
+        name = name + "/jvm",
+        srcs = [],
+        java = "foo/bar/bin/java",
+    )
+    util.helper_target(
+        java_runtime_alias,
+        name = name + "/alias",
+    )
+    util.helper_target(
+        java_runtime_info_forwarding_rule,
+        name = name + "/r",
+        java_runtime = name + "/alias",
+    )
+    util.helper_target(
+        native.toolchain,
+        name = name + "/java_runtime_toolchain",
+        toolchain = name + "/jvm",
+        toolchain_type = semantics.JAVA_RUNTIME_TOOLCHAIN_TYPE,
+    )
+
+    analysis_test(
+        name = name,
+        impl = _test_with_generated_java_executable_impl,
+        target = name + "/r",
+        config_settings = {
+            "//command_line_option:extra_toolchains": [Label(name + "/java_runtime_toolchain")],
+        },
+        # Bazel 6 doesn't accept Label's for the transition above
+        attr_values = {"tags": ["min_bazel_7"]},
+    )
+
+def _test_with_generated_java_executable_impl(env, target):
+    assert_info = java_runtime_info_subject.from_target(env, target)
+
+    assert_info.java_home().equals("{bindir}/{package}/foo/bar")
+    assert_info.java_home_runfiles_path().equals("{package}/foo/bar")
+    assert_info.java_executable_exec_path().starts_with("{bindir}/{package}/foo/bar/bin/java")
+    assert_info.java_executable_runfiles_path().starts_with("{package}/foo/bar/bin/java")
+
 def java_runtime_tests(name):
     test_suite(
         name = name,
         tests = [
             _test_with_absolute_java_home,
             _test_with_hermetic_java_home,
+            _test_with_generated_java_executable,
         ],
     )