Migrate the `JavaStarlarkApiTest.starlarkJavaToJavaBinaryAttributes` test to Starlark The test is removed from Bazel and added in `@rules_java` PiperOrigin-RevId: 738576515 Change-Id: Id4ccc84502d327921669adeea0207b67e19f367e
diff --git a/java/test/common/rules/java_binary_tests.bzl b/java/test/common/rules/java_binary_tests.bzl index 2a8f034..3b763f9 100644 --- a/java/test/common/rules/java_binary_tests.bzl +++ b/java/test/common/rules/java_binary_tests.bzl
@@ -4,7 +4,9 @@ load("@rules_testing//lib:truth.bzl", "matching") load("@rules_testing//lib:util.bzl", "util") load("//java:java_binary.bzl", "java_binary") +load("//java:java_library.bzl", "java_library") load("//java/test/testutil:java_info_subject.bzl", "java_info_subject") +load("//java/test/testutil:rules/forward_java_info.bzl", "java_info_forwarding_rule") def _test_java_binary_provides_binary_java_info(name): util.helper_target(java_binary, name = "bin", srcs = ["Main.java"]) @@ -53,11 +55,57 @@ matching.file_basename_equals("redacted_file.properties"), ) +def _test_java_binary_attributes(name): + util.helper_target( + java_library, + name = name + "/jl_bottom_for_deps", + srcs = ["java/A.java"], + ) + util.helper_target( + java_library, + name = name + "/jl_bottom_for_runtime_deps", + srcs = ["java/A2.java"], + ) + util.helper_target( + java_info_forwarding_rule, + name = name + "/mya", + dep = name + "/jl_bottom_for_deps", + ) + util.helper_target( + java_info_forwarding_rule, + name = name + "/myb", + dep = name + "/jl_bottom_for_runtime_deps", + ) + util.helper_target( + java_binary, + name = name + "/binary", + srcs = ["java/B.java"], + main_class = "foo.A", + deps = [name + "/mya"], + runtime_deps = [name + "/myb"], + ) + + analysis_test( + name = name, + impl = _test_java_binary_attributes_impl, + target = name + "/binary", + ) + +def _test_java_binary_attributes_impl(env, target): + assert_runtime_classpath = java_info_subject.from_target(env, target).compilation_info().runtime_classpath() + + # Test that all bottom jars are on the runtime classpath. + assert_runtime_classpath.contains_at_least_predicates([ + matching.file_basename_equals("jl_bottom_for_deps.jar"), + matching.file_basename_equals("jl_bottom_for_runtime_deps.jar"), + ]) + def java_binary_tests(name): test_suite( name = name, tests = [ _test_java_binary_provides_binary_java_info, _test_stamp_conversion_does_not_override_int, + _test_java_binary_attributes, ], )