Migrate the `JavaStarlarkApiTest.javaPlugin_exposesJavaOutputs` test to Starlark
The test is removed from Bazel and added in rules_java
PiperOrigin-RevId: 734673271
Change-Id: Ie77c81ffe89fc95f7fe187fbd49063450ea06e2a
diff --git a/java/test/common/BUILD b/java/test/common/BUILD
index c9cd066..5305a01 100644
--- a/java/test/common/BUILD
+++ b/java/test/common/BUILD
@@ -1,6 +1,9 @@
load(":java_common_tests.bzl", "java_common_tests")
load(":java_info_tests.bzl", "java_info_tests")
+load(":java_plugin_info_tests.bzl", "java_plugin_info_tests")
java_common_tests(name = "java_common_tests")
java_info_tests(name = "java_info_tests")
+
+java_plugin_info_tests(name = "java_plugin_info_tests")
diff --git a/java/test/common/java_plugin_info_tests.bzl b/java/test/common/java_plugin_info_tests.bzl
new file mode 100644
index 0000000..381a6d4
--- /dev/null
+++ b/java/test/common/java_plugin_info_tests.bzl
@@ -0,0 +1,43 @@
+"""Tests for the JavaPluginInfo provider"""
+
+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("//java:java_plugin.bzl", "java_plugin")
+load("//java/test/testutil:java_info_subject.bzl", "java_plugin_info_subject")
+
+def _test_exposes_java_outputs(name):
+ util.helper_target(
+ java_library,
+ name = name + "/lib",
+ srcs = ["Lib.java"],
+ )
+ util.helper_target(
+ java_plugin,
+ name = name + "/dep",
+ srcs = ["Dep.java"],
+ deps = [name + "/lib"],
+ )
+
+ analysis_test(
+ name = name,
+ impl = _test_exposes_java_outputs_impl,
+ target = name + "/dep",
+ )
+
+def _test_exposes_java_outputs_impl(env, target):
+ assert_output = java_plugin_info_subject.from_target(env, target).java_outputs().singleton()
+
+ assert_output.class_jar().short_path_equals("{package}/lib{name}.jar")
+ assert_output.compile_jar().short_path_equals("{package}/lib{name}-hjar.jar")
+ assert_output.source_jars().contains_exactly(["{package}/lib{name}-src.jar"])
+ assert_output.jdeps().short_path_equals("{package}/lib{name}.jdeps")
+ assert_output.compile_jdeps().short_path_equals("{package}/lib{name}-hjar.jdeps")
+
+def java_plugin_info_tests(name):
+ test_suite(
+ name = name,
+ tests = [
+ _test_exposes_java_outputs,
+ ],
+ )
diff --git a/java/test/testutil/java_info_subject.bzl b/java/test/testutil/java_info_subject.bzl
index 8b74925..de2d218 100644
--- a/java/test/testutil/java_info_subject.bzl
+++ b/java/test/testutil/java_info_subject.bzl
@@ -3,6 +3,7 @@
load("@rules_testing//lib:truth.bzl", "subjects", "truth")
load("//java/common:java_common.bzl", "java_common")
load("//java/common:java_info.bzl", "JavaInfo")
+load("//java/common:java_plugin_info.bzl", "JavaPluginInfo")
load(":cc_info_subject.bzl", "cc_info_subject")
def _new_java_info_subject(java_info, meta):
@@ -136,6 +137,21 @@
)
return public
+def _new_java_plugin_info_subject(java_plugin_info, meta):
+ self = struct(actual = java_plugin_info, meta = meta.derive("JavaPluginInfo"))
+ public = struct(
+ java_outputs = lambda: _new_java_outputs_collection_subject(self.actual.java_outputs, meta.derive("java_outputs")),
+ )
+ return public
+
+def _java_plugin_info_subject_from_target(env, target):
+ return _new_java_plugin_info_subject(target[JavaPluginInfo], meta = truth.expect(env).meta.derive(
+ format_str_kwargs = {
+ "name": target.label.name,
+ "package": target.label.package,
+ },
+ ))
+
def _get_singleton(seq):
if len(seq) != 1:
fail("expected singleton, got:", seq)
@@ -145,3 +161,8 @@
new = _new_java_info_subject,
from_target = _java_info_subject_from_target,
)
+
+java_plugin_info_subject = struct(
+ new = _new_java_plugin_info_subject,
+ from_target = _java_plugin_info_subject_from_target,
+)