Migrate *_getCommandLineFromToolchain Java tests to Starlark

PiperOrigin-RevId: 875878855
Change-Id: Idf86d2f3c0529fd1749035b2f22d3c5447fdf632
diff --git a/test/java/testutil/javac_action_subject.bzl b/test/java/testutil/javac_action_subject.bzl
index ef23812..5dfbab4 100644
--- a/test/java/testutil/javac_action_subject.bzl
+++ b/test/java/testutil/javac_action_subject.bzl
@@ -24,6 +24,7 @@
         target = lambda: _create_subject_for_flag("-target", self.parsed_flags, self.meta),
         xmaxerrs = lambda: _create_subject_for_flag("-Xmaxerrs", self.parsed_flags, self.meta),
         jar = lambda: _create_subject_for_flag("-jar", self.parsed_flags, self.meta),
+        executable_file_name = lambda: subjects.str(action_subject.actual.argv[0], self.meta),
         inputs = action_subject.inputs,
         argv = action_subject.argv,
     )
diff --git a/test/java/toolchains/java_toolchain_tests.bzl b/test/java/toolchains/java_toolchain_tests.bzl
index 976bb08..a13e086 100644
--- a/test/java/toolchains/java_toolchain_tests.bzl
+++ b/test/java/toolchains/java_toolchain_tests.bzl
@@ -2,6 +2,7 @@
 
 load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite")
 load("@rules_testing//lib:util.bzl", "util")
+load("//java:java_binary.bzl", "java_binary")
 load("//java:java_library.bzl", "java_library")
 load("//java/common:java_semantics.bzl", "semantics")
 load("//java/toolchains:java_runtime.bzl", "java_runtime")
@@ -110,11 +111,59 @@
 
     assert_toolchain.jacocorunner().short_path_equals("{package}/myjacocorunner.jar")
 
+def _test_singlejar_get_command_line(name):
+    _declare_java_toolchain(name = name)
+    util.helper_target(
+        java_binary,
+        name = name + "/a",
+        srcs = ["a.java"],
+    )
+
+    analysis_test(
+        name = name,
+        impl = _test_singlejar_get_command_line_impl,
+        target = name + "/a",
+        config_settings = {
+            "//command_line_option:extra_toolchains": [Label(name + "/toolchain")],
+        },
+        # This crashes in earlier Bazel versions where native rules handled deploy jars differently.
+        attr_values = {"tags": ["min_bazel_8"]},
+    )
+
+def _test_singlejar_get_command_line_impl(env, target):
+    assert_javac_action = javac_action_subject.of(env, target, "{package}/{name}_deploy.jar")
+    assert_javac_action.executable_file_name().equals(target.label.package + "/singlejar")
+
+def _test_genclass_get_command_line(name):
+    _declare_java_toolchain(name = name)
+    util.helper_target(
+        java_library,
+        name = name + "/a",
+        srcs = ["a.java"],
+        javacopts = ["-processor NOSUCH"],
+    )
+
+    analysis_test(
+        name = name,
+        impl = _test_genclass_get_command_line_impl,
+        target = name + "/a",
+        config_settings = {
+            "//command_line_option:extra_toolchains": [Label(name + "/toolchain")],
+        },
+    )
+
+def _test_genclass_get_command_line_impl(env, target):
+    assert_javac_action = javac_action_subject.of(env, target, "{package}/lib{name}-gen.jar")
+
+    assert_javac_action.jar().contains_exactly(["{package}/GenClass_deploy.jar"])
+
 def java_toolchain_tests(name):
     test_suite(
         name = name,
         tests = [
             _test_jacocorunner,
             _test_javac_gets_options,
+            _test_singlejar_get_command_line,
+            _test_genclass_get_command_line,
         ],
     )