Migrate the `JavaStarlarkApiTest.starlarkJavaToJavaImportAttributes` test to Starlark The test is removed from Bazel and added in `@rules_java` PiperOrigin-RevId: 738605511 Change-Id: If27e7c863f45b5853a57ad1cabeb21a198d58244
diff --git a/java/test/common/rules/BUILD b/java/test/common/rules/BUILD index e46aa94..0639d29 100644 --- a/java/test/common/rules/BUILD +++ b/java/test/common/rules/BUILD
@@ -1,4 +1,5 @@ load(":java_binary_tests.bzl", "java_binary_tests") +load(":java_import_tests.bzl", "java_import_tests") load(":java_library_tests.bzl", "java_library_tests") load(":java_plugin_tests.bzl", "java_plugin_tests") load(":merge_attrs_tests.bzl", "merge_attrs_test_suite") @@ -10,3 +11,5 @@ java_plugin_tests(name = "java_plugin_tests") java_library_tests(name = "java_library_tests") + +java_import_tests(name = "java_import_tests")
diff --git a/java/test/common/rules/java_import_tests.bzl b/java/test/common/rules/java_import_tests.bzl new file mode 100644 index 0000000..ca54e7f --- /dev/null +++ b/java/test/common/rules/java_import_tests.bzl
@@ -0,0 +1,62 @@ +"""Tests for the java_import rule""" + +load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite") +load("@rules_testing//lib:truth.bzl", "matching") +load("@rules_testing//lib:util.bzl", "util") +load("//java:java_import.bzl", "java_import") +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_import_attributes(name): + target_name = name + "/import" + util.helper_target( + java_library, + name = target_name + "/jl_bottom_for_deps", + srcs = ["java/A.java"], + ) + util.helper_target( + java_library, + name = target_name + "/jl_bottom_for_runtime_deps", + srcs = ["java/A2.java"], + ) + util.helper_target( + java_info_forwarding_rule, + name = target_name + "/mya", + dep = target_name + "/jl_bottom_for_deps", + ) + util.helper_target( + java_info_forwarding_rule, + name = target_name + "/myb", + dep = target_name + "/jl_bottom_for_runtime_deps", + ) + util.helper_target( + java_import, + name = target_name, + jars = ["B.jar"], + runtime_deps = [target_name + "/myb"], + deps = [target_name + "/mya"], + ) + + analysis_test( + name = name, + impl = _test_java_import_attributes_impl, + target = target_name, + ) + +def _test_java_import_attributes_impl(env, target): + assert_runtime_jars = java_info_subject.from_target(env, target).compilation_args().transitive_runtime_jars() + + # Test that all bottom jars are on the runtime classpath. + assert_runtime_jars.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_import_tests(name): + test_suite( + name = name, + tests = [ + _test_java_import_attributes, + ], + )