Migrate the module flag tests to Starlark The tests are removed from Bazel and added to rules_java (ignore-relnotes) PiperOrigin-RevId: 922006563 Change-Id: I7490d5219ed376c98f91e773018bad39a23d2cfc
diff --git a/.bazelrc b/.bazelrc index 9db5d77..12d684f 100644 --- a/.bazelrc +++ b/.bazelrc
@@ -16,4 +16,7 @@ # Some tests relies on dynamic libs that are not interface libs # the latter are always enabled on Windows: https://github.com/bazelbuild/bazel/blob/1f5414408467171581b6142e93f67fe730d722cf/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java#L2430 # we can't use a transition because toolchain deps exceed the default --analysis_testing_deps_limit. -test --nointerface_shared_objects \ No newline at end of file +test --nointerface_shared_objects + +# For testing add_exports/add_opens module flags behavior. +test --incompatible_java_info_merge_runtime_module_flags
diff --git a/test/java/bazel/common/BUILD.bazel b/test/java/bazel/common/BUILD.bazel index 18ab4f8..c9cd066 100644 --- a/test/java/bazel/common/BUILD.bazel +++ b/test/java/bazel/common/BUILD.bazel
@@ -1,3 +1,6 @@ load(":java_common_tests.bzl", "java_common_tests") +load(":java_info_tests.bzl", "java_info_tests") java_common_tests(name = "java_common_tests") + +java_info_tests(name = "java_info_tests")
diff --git a/test/java/bazel/common/java_info_tests.bzl b/test/java/bazel/common/java_info_tests.bzl new file mode 100644 index 0000000..cae1a92 --- /dev/null +++ b/test/java/bazel/common/java_info_tests.bzl
@@ -0,0 +1,67 @@ +"""Tests for Bazel JavaInfo.""" + +load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite") +load("@rules_testing//lib:util.bzl", "util") +load("//java:java_library.bzl", "java_library") +load("//test/java/testutil:java_info_subject.bzl", "java_info_subject") +load("//test/java/testutil:rules/custom_java_info_rule.bzl", "custom_java_info_rule") + +# We can't transition on a Starlark-semantics affecting flag, so this relies on +# --incompatible_java_info_merge_runtime_module_flags set in .bazelrc +def _test_create_java_info_with_module_flags_merge_runtime(name): + util.helper_target( + custom_java_info_rule, + name = name + "/my_starlark_rule", + output_jar = name + "/doesnotmatter.jar", + dep = [name + "/dep"], + dep_runtime = [name + "/runtime"], + dep_exports = [name + "/export"], + add_exports = ["java.base/java.lang.invoke"], + ) + util.helper_target( + java_library, + name = name + "/dep", + srcs = ["java/A.java"], + add_exports = ["java.base/java.lang"], + add_opens = ["java.base/java.lang"], + ) + + util.helper_target( + java_library, + name = name + "/runtime", + srcs = ["java/A.java"], + add_opens = ["java.base/java.util"], + ) + + util.helper_target( + java_library, + name = name + "/export", + srcs = ["java/A.java"], + add_opens = ["java.base/java.math"], + ) + + analysis_test( + name = name, + impl = _test_create_java_info_with_module_flags_merge_runtime_impl, + target = name + "/my_starlark_rule", + ) + +def _test_create_java_info_with_module_flags_merge_runtime_impl(env, target): + assert_module_info = java_info_subject.from_target(env, target).module_flags() + assert_module_info.add_exports().contains_exactly([ + "java.base/java.lang", + "java.base/java.lang.invoke", + ]).in_order() + assert_module_info.add_opens().contains_exactly([ + "java.base/java.util", + "java.base/java.math", + "java.base/java.lang", + ]).in_order() + +def java_info_tests(name): + test_suite( + name = name, + tests = [ + _test_create_java_info_with_module_flags_merge_runtime, + ], + )
diff --git a/test/java/testutil/rules/custom_java_info_rule.bzl b/test/java/testutil/rules/custom_java_info_rule.bzl index 3b61473..e9a4791 100644 --- a/test/java/testutil/rules/custom_java_info_rule.bzl +++ b/test/java/testutil/rules/custom_java_info_rule.bzl
@@ -61,6 +61,8 @@ generated_source_jar = ctx.file.generated_source_jar, native_headers_jar = ctx.file.native_headers_jar, manifest_proto = ctx.file.manifest_proto, + add_exports = ctx.attr.add_exports, + add_opens = ctx.attr.add_opens, ), ] @@ -86,6 +88,8 @@ "pack_sources": attr.bool(default = False), "stamp_jar": attr.bool(default = False), "compile_jar": attr.label(allow_single_file = True), + "add_exports": attr.string_list(), + "add_opens": attr.string_list(), }, toolchains = [semantics.JAVA_TOOLCHAIN_TYPE], )