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, )