Add a test that `java_test` has assertions enabled.

(ignore-relnotes)

PiperOrigin-RevId: 952644847
Change-Id: I4cec6bd7bc221d1042867e8e399f9513916b31ae
diff --git a/test/java/common/rules/common_launcher_java_binary_tests.bzl b/test/java/common/rules/common_launcher_java_binary_tests.bzl
index 6a71904..56b49d3 100644
--- a/test/java/common/rules/common_launcher_java_binary_tests.bzl
+++ b/test/java/common/rules/common_launcher_java_binary_tests.bzl
@@ -202,6 +202,21 @@
         "common.rules.{test_name}.withdot.Test".format(test_name = env.ctx.label.name),
     )
 
+def _test_java_test_has_assertions_enabled(name):
+    util.helper_target(
+        java_test,
+        name = name + "/testea",
+    )
+
+    analysis_test(
+        name = name,
+        impl = _test_java_test_has_assertions_enabled_impl,
+        target = name + "/testea",
+    )
+
+def _test_java_test_has_assertions_enabled_impl(env, target):
+    expect_that_executable.of_target(env, target).jvm_flags().contains("-ea")
+
 def java_binary_launcher_tests(name):
     test_suite(
         name = name,
@@ -214,5 +229,6 @@
             _test_java_binary_implicit_main_class,
             _test_java_test_main_class,
             _test_java_test_main_class_with_dot,
+            _test_java_test_has_assertions_enabled,
         ],
     )
diff --git a/test/java/testutil/binary_executable_subject.bzl b/test/java/testutil/binary_executable_subject.bzl
index 818d66e..8e615a0 100644
--- a/test/java/testutil/binary_executable_subject.bzl
+++ b/test/java/testutil/binary_executable_subject.bzl
@@ -9,6 +9,7 @@
     public = struct(
         java_start_class = lambda: _java_start_class_subject(action_subject),
         test_suite = lambda: _test_suite_subject(action_subject),
+        jvm_flags = lambda: _jvm_flags_subject(action_subject),
     )
     return public
 
@@ -24,21 +25,23 @@
         ).offset(0, factory = subjects.str)
 
 def _test_suite_subject(action):
-    if action.actual.substitutions:
-        jvm_flags = action.substitutions().get("%jvm_flags%", factory = subjects.str).split(" ")
-    else:
-        # Windows
-        jvm_flags = action.argv().transform(
-            filter = lambda e: e.startswith("jvm_flags="),
-            map_each = lambda e: e.split("=", 1)[1],
-            desc = "jvm_flags",
-        ).offset(0, factory = subjects.str).split("\t")
-    return jvm_flags.transform(
+    return _jvm_flags_subject(action).transform(
         filter = lambda e: e.startswith("-D" + semantics.TEST_SUITE_PROPERTY_NAME + "="),
         map_each = lambda e: e.split("=", 1)[1],
         desc = semantics.TEST_SUITE_PROPERTY_NAME,
     ).offset(0, factory = subjects.str)
 
+def _jvm_flags_subject(action):
+    if action.actual.substitutions:
+        return action.substitutions().get("%jvm_flags%", factory = subjects.str).split(" ")
+    else:
+        # Windows
+        return action.argv().transform(
+            filter = lambda e: e.startswith("jvm_flags="),
+            map_each = lambda e: e.split("=", 1)[1],
+            desc = "jvm_flags",
+        ).offset(0, factory = subjects.str).split("\t")
+
 expect_that_executable = struct(
     of_target = _of_target,
 )