Prepare for Starlarkifying more `java_library` and `java_binary` tests

(ignore-relnotes)

PiperOrigin-RevId: 879015156
Change-Id: I3f1d0bcf272e21de4861096fa570d98ce461f7fa
diff --git a/test/java/common/rules/common_launcher_java_binary_tests.bzl b/test/java/common/rules/common_launcher_java_binary_tests.bzl
new file mode 100644
index 0000000..34c6e3f
--- /dev/null
+++ b/test/java/common/rules/common_launcher_java_binary_tests.bzl
@@ -0,0 +1,28 @@
+"""Parameterized tests for java_binary with --java_launcher"""
+
+load("@rules_testing//lib:analysis_test.bzl", "analysis_test")
+load("@rules_testing//lib:util.bzl", "util")
+load("//java:java_binary.bzl", "java_binary")
+
+def _test_java_binary_non_executable_rule_outputs(name):
+    util.helper_target(
+        java_binary,
+        name = name + "/test_app_noexec",
+        srcs = ["InputFile.java"],
+        create_executable = 0,
+    )
+
+    analysis_test(
+        name = name,
+        impl = _test_java_binary_non_executable_rule_outputs_impl,
+        target = name + "/test_app_noexec",
+    )
+
+def _test_java_binary_non_executable_rule_outputs_impl(env, target):
+    env.expect.that_target(target).default_outputs().contains_exactly([
+        "{package}/{name}.jar",
+    ])
+
+JAVA_BINARY_LAUNCHER_TESTS = [
+    _test_java_binary_non_executable_rule_outputs,
+]
diff --git a/test/java/common/rules/common_launcher_java_library_tests.bzl b/test/java/common/rules/common_launcher_java_library_tests.bzl
new file mode 100644
index 0000000..8f0ed22
--- /dev/null
+++ b/test/java/common/rules/common_launcher_java_library_tests.bzl
@@ -0,0 +1,27 @@
+"""Parameterized tests for java_library with --java_launcher"""
+
+load("@rules_testing//lib:analysis_test.bzl", "analysis_test")
+load("@rules_testing//lib:util.bzl", "util")
+load("//java:java_library.bzl", "java_library")
+
+def _test_java_library_rule_outputs(name):
+    util.helper_target(
+        java_library,
+        name = name + "/test_lib",
+        srcs = ["A.java"],
+    )
+
+    analysis_test(
+        name = name,
+        impl = _test_java_library_rule_outputs_impl,
+        target = name + "/test_lib",
+    )
+
+def _test_java_library_rule_outputs_impl(env, target):
+    env.expect.that_target(target).default_outputs().contains_exactly([
+        "{package}/lib{name}.jar",
+    ])
+
+JAVA_LIBRARY_LAUNCHER_TESTS = [
+    _test_java_library_rule_outputs,
+]
diff --git a/test/java/common/rules/java_binary_tests.bzl b/test/java/common/rules/java_binary_tests.bzl
index 10728fb..7ee9eb1 100644
--- a/test/java/common/rules/java_binary_tests.bzl
+++ b/test/java/common/rules/java_binary_tests.bzl
@@ -8,6 +8,7 @@
 load("@rules_testing//lib:util.bzl", "util")
 load("//java:java_binary.bzl", "java_binary")
 load("//java:java_library.bzl", "java_library")
+load("//test/java/common/rules:common_launcher_java_binary_tests.bzl", "JAVA_BINARY_LAUNCHER_TESTS")
 load("//test/java/testutil:helper.bzl", "always_passes")
 load("//test/java/testutil:java_info_subject.bzl", "java_info_subject")
 load("//test/java/testutil:rules/custom_java_info_rule.bzl", "custom_java_info_rule")
@@ -251,7 +252,7 @@
 
 def java_binary_tests(name):
     test_suite(
-        name = name,
+        name = "_basic_" + name,
         tests = [
             _test_java_binary_provides_binary_java_info,
             _test_stamp_conversion_does_not_override_int,
@@ -261,3 +262,17 @@
             _test_java_binary_can_set_transitive_validation,
         ],
     )
+
+    # TODO: unset --java_launcher explicitly
+    test_suite(
+        name = "_jdk_launcher_" + name,
+        tests = JAVA_BINARY_LAUNCHER_TESTS,
+    )
+
+    native.test_suite(
+        name = name,
+        tests = [
+            "_basic_" + name,
+            "_jdk_launcher_" + name,
+        ],
+    )
diff --git a/test/java/common/rules/java_library_tests.bzl b/test/java/common/rules/java_library_tests.bzl
index 64e1743..77980f2 100644
--- a/test/java/common/rules/java_library_tests.bzl
+++ b/test/java/common/rules/java_library_tests.bzl
@@ -9,6 +9,8 @@
 load("//java:java_library.bzl", "java_library")
 load("//java:java_plugin.bzl", "java_plugin")
 load("//java/common:java_info.bzl", "JavaInfo")
+load("//test/java/common/rules:common_launcher_java_library_tests.bzl", "JAVA_LIBRARY_LAUNCHER_TESTS")
+load("//test/java/testutil:helper.bzl", "always_passes")
 load("//test/java/testutil:java_info_subject.bzl", "java_info_subject")
 load("//test/java/testutil:javac_action_subject.bzl", "javac_action_subject")
 load("//test/java/testutil:rules/custom_java_info_rule.bzl", "custom_java_info_rule")
@@ -312,6 +314,10 @@
     assert_lib.dynamic_library().basename().contains("mynativedep")
 
 def _test_strict_java_deps(name, strict_java_deps):
+    if not bazel_features.rules.analysis_tests_can_transition_on_experimental_incompatible_flags:
+        always_passes(name)
+        return
+
     util.helper_target(
         java_library,
         name = name + "/jl",
@@ -344,22 +350,31 @@
     _test_strict_java_deps(name, "ERROR")
 
 def java_library_tests(name):
-    tests = [
-        _test_exposes_plugins,
-        _test_exposes_java_info,
-        _test_java_info_propagation,
-        _test_java_library_attributes,
-        _test_propagates_direct_native_libraries,
-        _test_exposes_native_library_info,
-    ]
-    if bazel_features.rules.analysis_tests_can_transition_on_experimental_incompatible_flags:
-        tests += [
+    test_suite(
+        name = "_basic_" + name,
+        tests = [
+            _test_exposes_plugins,
+            _test_exposes_java_info,
+            _test_java_info_propagation,
+            _test_java_library_attributes,
+            _test_propagates_direct_native_libraries,
+            _test_exposes_native_library_info,
             _test_strict_java_deps_off,
             _test_strict_java_deps_warn,
             _test_strict_java_deps_error,
-        ]
+        ],
+    )
 
+    # TODO: unset --java_launcher explicitly
     test_suite(
+        name = "_jdk_launcher_" + name,
+        tests = JAVA_LIBRARY_LAUNCHER_TESTS,
+    )
+
+    native.test_suite(
         name = name,
-        tests = tests,
+        tests = [
+            "_basic_" + name,
+            "_jdk_launcher_" + name,
+        ],
     )