Migrate the `JavaStarlarkApiTest.testJavaRuntimeProviderJavaGenerated` test to Starlark The test is removed from Bazel and added in `@rules_java` PiperOrigin-RevId: 738381284 Change-Id: Ie15bbe60e85bba0261ca248a67c77d48014c76a5
diff --git a/java/test/testutil/java_runtime_info_subject.bzl b/java/test/testutil/java_runtime_info_subject.bzl index 79ab2fc..ef5bdf9 100644 --- a/java/test/testutil/java_runtime_info_subject.bzl +++ b/java/test/testutil/java_runtime_info_subject.bzl
@@ -1,6 +1,7 @@ """Custom @rules_testing subject for the JavaRuntimeInfo provider""" load("@rules_testing//lib:truth.bzl", "subjects", "truth") +load("@rules_testing//lib:util.bzl", "TestingAspectInfo") load("//java/common:java_common.bzl", "java_common") def _new_java_runtime_info_subject(java_runtime_info, meta): @@ -38,6 +39,7 @@ format_str_kwargs = { "name": target.label.name, "package": target.label.package, + "bindir": target[TestingAspectInfo].bin_path, }, ), )
diff --git a/java/test/toolchains/java_runtime_tests.bzl b/java/test/toolchains/java_runtime_tests.bzl index 2dfcbbd..2f2b86d 100644 --- a/java/test/toolchains/java_runtime_tests.bzl +++ b/java/test/toolchains/java_runtime_tests.bzl
@@ -92,11 +92,61 @@ assert_info.java_executable_exec_path().starts_with("{package}/foo/bar/bin/java") assert_info.java_executable_runfiles_path().starts_with("{package}/foo/bar/bin/java") +def _test_with_generated_java_executable(name): + util.helper_target( + native.genrule, + name = name + "/gen", + cmd = "", + outs = ["foo/bar/bin/java"], + output_to_bindir = True, + ) + util.helper_target( + java_runtime, + name = name + "/jvm", + srcs = [], + java = "foo/bar/bin/java", + ) + util.helper_target( + java_runtime_alias, + name = name + "/alias", + ) + util.helper_target( + java_runtime_info_forwarding_rule, + name = name + "/r", + java_runtime = name + "/alias", + ) + util.helper_target( + native.toolchain, + name = name + "/java_runtime_toolchain", + toolchain = name + "/jvm", + toolchain_type = semantics.JAVA_RUNTIME_TOOLCHAIN_TYPE, + ) + + analysis_test( + name = name, + impl = _test_with_generated_java_executable_impl, + target = name + "/r", + config_settings = { + "//command_line_option:extra_toolchains": [Label(name + "/java_runtime_toolchain")], + }, + # Bazel 6 doesn't accept Label's for the transition above + attr_values = {"tags": ["min_bazel_7"]}, + ) + +def _test_with_generated_java_executable_impl(env, target): + assert_info = java_runtime_info_subject.from_target(env, target) + + assert_info.java_home().equals("{bindir}/{package}/foo/bar") + assert_info.java_home_runfiles_path().equals("{package}/foo/bar") + assert_info.java_executable_exec_path().starts_with("{bindir}/{package}/foo/bar/bin/java") + assert_info.java_executable_runfiles_path().starts_with("{package}/foo/bar/bin/java") + def java_runtime_tests(name): test_suite( name = name, tests = [ _test_with_absolute_java_home, _test_with_hermetic_java_home, + _test_with_generated_java_executable, ], )