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],
 )