Migrate `JavaStarlarkApiTest.testPackSourcesWithExternalResourceArtifact` to Starlark

The test is removed from Bazel and added to `@rules_java`

PiperOrigin-RevId: 886915767
Change-Id: Ibaacab7d5241e21a1a0b1870c335e20c88135a85
diff --git a/MODULE.bazel b/MODULE.bazel
index 769902b..38405ca 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -130,4 +130,4 @@
 )
 
 test_repositories = use_extension("//test:repositories.bzl", "test_repositories_ext", dev_dependency = True)
-use_repo(test_repositories, "guava", "truth")
+use_repo(test_repositories, "guava", "other_repo", "truth")
diff --git a/test/java/bazel/common/BUILD.bazel b/test/java/bazel/common/BUILD.bazel
new file mode 100644
index 0000000..18ab4f8
--- /dev/null
+++ b/test/java/bazel/common/BUILD.bazel
@@ -0,0 +1,3 @@
+load(":java_common_tests.bzl", "java_common_tests")
+
+java_common_tests(name = "java_common_tests")
diff --git a/test/java/bazel/common/java_common_tests.bzl b/test/java/bazel/common/java_common_tests.bzl
new file mode 100644
index 0000000..80fdf44
--- /dev/null
+++ b/test/java/bazel/common/java_common_tests.bzl
@@ -0,0 +1,41 @@
+"""Bazel tests for java_common APIs"""
+
+load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite")
+load("@rules_testing//lib:util.bzl", "util")
+load("//test/java/testutil:rules/custom_java_info_rule.bzl", "custom_java_info_rule")
+
+def _test_java_common_pack_sources_with_external_resource(name):
+    util.helper_target(
+        custom_java_info_rule,
+        name = name + "/custom",
+        output_jar = name + "/custom.jar",
+        sources = [
+            ":InternalLib.java",
+            "@other_repo//:ExternalLib.java",
+        ],
+        pack_sources = True,
+    )
+
+    analysis_test(
+        name = name,
+        impl = _test_java_common_pack_sources_with_external_resource_impl,
+        target = name + "/custom",
+        # Bazel 7 names external repos differently
+        attr_values = {"tags": ["min_bazel_8"]},
+    )
+
+def _test_java_common_pack_sources_with_external_resource_impl(env, target):
+    assert_that_action = env.expect.that_target(target).action_generating("{package}/{name}-src.jar")
+    assert_that_action.argv().contains_at_least([
+        "--resources",
+        "{package}/InternalLib.java:bazel/common/InternalLib.java",
+        "external/+test_repositories_ext+other_repo/ExternalLib.java:ExternalLib.java",
+    ]).in_order()
+
+def java_common_tests(name):
+    test_suite(
+        name = name,
+        tests = [
+            _test_java_common_pack_sources_with_external_resource,
+        ],
+    )
diff --git a/test/repositories.bzl b/test/repositories.bzl
index 5d4f568..0f0afd5 100644
--- a/test/repositories.bzl
+++ b/test/repositories.bzl
@@ -5,6 +5,7 @@
 # TODO: Use http_jar from //java:http_jar.bzl once it doesn't refert to cache.bzl from @bazel_tools
 # anymore, which isn't available in Bazel 6.
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
+load("@bazel_tools//tools/build_defs/repo:local.bzl", "local_repository")
 
 def test_repositories():
     http_file(
@@ -19,5 +20,9 @@
         integrity = "sha256-Ushs3a3DG8hFfB4VaJ/Gt14ul84qg9i1S3ldVW1In4w=",
         downloaded_file_path = "truth.jar",
     )
+    local_repository(
+        name = "other_repo",
+        path = "test/testdata/other_repo",
+    )
 
 test_repositories_ext = modules.as_extension(test_repositories)
diff --git a/test/testdata/other_repo/BUILD.bazel b/test/testdata/other_repo/BUILD.bazel
new file mode 100644
index 0000000..fc25d5f
--- /dev/null
+++ b/test/testdata/other_repo/BUILD.bazel
@@ -0,0 +1 @@
+exports_files(["ExternalLib.java"])
diff --git a/test/testdata/other_repo/MODULE.bazel b/test/testdata/other_repo/MODULE.bazel
new file mode 100644
index 0000000..f90d195
--- /dev/null
+++ b/test/testdata/other_repo/MODULE.bazel
@@ -0,0 +1 @@
+module(name = "other_repo")