Skip to content

Commit 066193e

Browse files
hvadehrarules_java Copybara
authored andcommitted
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
1 parent 69416a8 commit 066193e

3 files changed

Lines changed: 67 additions & 0 deletions

File tree

java/test/common/BUILD

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
load(":java_common_tests.bzl", "java_common_tests")
22
load(":java_info_tests.bzl", "java_info_tests")
3+
load(":java_plugin_info_tests.bzl", "java_plugin_info_tests")
34

45
java_common_tests(name = "java_common_tests")
56

67
java_info_tests(name = "java_info_tests")
8+
9+
java_plugin_info_tests(name = "java_plugin_info_tests")
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
"""Tests for the JavaPluginInfo provider"""
2+
3+
load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite")
4+
load("@rules_testing//lib:util.bzl", "util")
5+
load("//java:java_library.bzl", "java_library")
6+
load("//java:java_plugin.bzl", "java_plugin")
7+
load("//java/test/testutil:java_info_subject.bzl", "java_plugin_info_subject")
8+
9+
def _test_exposes_java_outputs(name):
10+
util.helper_target(
11+
java_library,
12+
name = name + "/lib",
13+
srcs = ["Lib.java"],
14+
)
15+
util.helper_target(
16+
java_plugin,
17+
name = name + "/dep",
18+
srcs = ["Dep.java"],
19+
deps = [name + "/lib"],
20+
)
21+
22+
analysis_test(
23+
name = name,
24+
impl = _test_exposes_java_outputs_impl,
25+
target = name + "/dep",
26+
)
27+
28+
def _test_exposes_java_outputs_impl(env, target):
29+
assert_output = java_plugin_info_subject.from_target(env, target).java_outputs().singleton()
30+
31+
assert_output.class_jar().short_path_equals("{package}/lib{name}.jar")
32+
assert_output.compile_jar().short_path_equals("{package}/lib{name}-hjar.jar")
33+
assert_output.source_jars().contains_exactly(["{package}/lib{name}-src.jar"])
34+
assert_output.jdeps().short_path_equals("{package}/lib{name}.jdeps")
35+
assert_output.compile_jdeps().short_path_equals("{package}/lib{name}-hjar.jdeps")
36+
37+
def java_plugin_info_tests(name):
38+
test_suite(
39+
name = name,
40+
tests = [
41+
_test_exposes_java_outputs,
42+
],
43+
)

java/test/testutil/java_info_subject.bzl

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
load("@rules_testing//lib:truth.bzl", "subjects", "truth")
44
load("//java/common:java_common.bzl", "java_common")
55
load("//java/common:java_info.bzl", "JavaInfo")
6+
load("//java/common:java_plugin_info.bzl", "JavaPluginInfo")
67
load(":cc_info_subject.bzl", "cc_info_subject")
78

89
def _new_java_info_subject(java_info, meta):
@@ -136,6 +137,21 @@ def _new_annotation_processing_subject(java_info, meta):
136137
)
137138
return public
138139

140+
def _new_java_plugin_info_subject(java_plugin_info, meta):
141+
self = struct(actual = java_plugin_info, meta = meta.derive("JavaPluginInfo"))
142+
public = struct(
143+
java_outputs = lambda: _new_java_outputs_collection_subject(self.actual.java_outputs, meta.derive("java_outputs")),
144+
)
145+
return public
146+
147+
def _java_plugin_info_subject_from_target(env, target):
148+
return _new_java_plugin_info_subject(target[JavaPluginInfo], meta = truth.expect(env).meta.derive(
149+
format_str_kwargs = {
150+
"name": target.label.name,
151+
"package": target.label.package,
152+
},
153+
))
154+
139155
def _get_singleton(seq):
140156
if len(seq) != 1:
141157
fail("expected singleton, got:", seq)
@@ -145,3 +161,8 @@ java_info_subject = struct(
145161
new = _new_java_info_subject,
146162
from_target = _java_info_subject_from_target,
147163
)
164+
165+
java_plugin_info_subject = struct(
166+
new = _new_java_plugin_info_subject,
167+
from_target = _java_plugin_info_subject_from_target,
168+
)

0 commit comments

Comments
 (0)