Add a test for `java_binary` with inner main class. (ignore-relnotes) PiperOrigin-RevId: 957013088 Change-Id: I35dc02128002d12fc41213703159d108233daa0b
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 b2cc206..ac4baac 100644 --- a/test/java/common/rules/common_launcher_java_binary_tests.bzl +++ b/test/java/common/rules/common_launcher_java_binary_tests.bzl
@@ -272,6 +272,29 @@ "${{JAVA_RUNFILES}}/{workspace}/_solib_{cpu}/_//{package}:{test_name}/jni.so___{package}", ]) +# Regression test for bug 2774317: Problems with inner classes as main class. +def _test_java_binary_inner_class(name): + util.helper_target( + java_binary, + name = name + "/inner", + srcs = ["Main.java"], + main_class = "Main$Inner", + ) + + analysis_test( + name = name, + attrs = {"_windows_constraints": attr.label_list(default = ["@platforms//os:windows"])}, + impl = _test_java_binary_inner_class_impl, + target = name + "/inner", + ) + +def _test_java_binary_inner_class_impl(env, target): + if helper.is_target_platform_windows(env.ctx): + expected = "Main$Inner" # unquoted on windows + else: + expected = "'Main$Inner'" # shell-quoted + expect_that_executable.of_target(env, target).java_start_class().equals(expected) + def java_binary_launcher_tests(name): test_suite( name = name, @@ -286,5 +309,6 @@ _test_java_test_main_class_with_dot, _test_java_test_has_assertions_enabled, _test_java_binary_native_library_path_includes_transitive_deps, + _test_java_binary_inner_class, ], )