Skip to content

Commit 93fdd8a

Browse files
hvadehrarules_java Copybara
authored and
rules_java Copybara
committedJan 30, 2025·
Add a test asseting that the JavaInfo returned by java_binary targets are marked as such.
PiperOrigin-RevId: 721430757 Change-Id: Ia90863e31ef83407abbacc1c3f3b23907c59b46e
1 parent 4aa6673 commit 93fdd8a

File tree

5 files changed

+45
-6
lines changed

5 files changed

+45
-6
lines changed
 

‎.bazelci/presubmit.yml

+4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ tasks:
4444
bazel: "7.4.0"
4545
build_targets: *build_targets
4646
test_targets: *test_targets
47+
test_flags:
48+
- "--test_tag_filters=-min_bazel_8"
4749
ubuntu2004_integration:
4850
name: "Bazel 7.x Integration"
4951
bazel: "7.4.0"
@@ -117,6 +119,8 @@ tasks:
117119
platform: ubuntu2004
118120
build_targets: *build_targets_bazel6
119121
test_targets: *test_targets_bazel6
122+
test_flags:
123+
- "--test_tag_filters=-min_bazel_7,-min_bazel_8"
120124
ubuntu2004_integration_bazel6:
121125
name: "Bazel 6.x Integration"
122126
bazel: 6.4.0

‎java/test/common/rules/BUILD

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
load(":java_binary_tests.bzl", "java_binary_tests")
12
load(":merge_attrs_tests.bzl", "merge_attrs_test_suite")
23

34
merge_attrs_test_suite(name = "merge_attrs_tests")
5+
6+
java_binary_tests(name = "java_binary_tests")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""Tests for the java_binary rule"""
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_binary.bzl", "java_binary")
6+
load("//java/test/testutil:java_info_subject.bzl", "java_info_subject")
7+
8+
def _test_java_binary_provides_binary_java_info(name):
9+
util.helper_target(java_binary, name = "bin", srcs = ["Main.java"])
10+
11+
analysis_test(
12+
name = name,
13+
impl = _test_java_binary_provides_binary_java_info_impl,
14+
target = Label(":bin"),
15+
attr_values = {"tags": ["min_bazel_7"]},
16+
)
17+
18+
def _test_java_binary_provides_binary_java_info_impl(env, target):
19+
assert_java_info = java_info_subject.from_target(env, target)
20+
21+
assert_java_info.compilation_args().equals(None)
22+
assert_java_info.is_binary().equals(True)
23+
24+
def java_binary_tests(name):
25+
test_suite(
26+
name = name,
27+
tests = [
28+
_test_java_binary_provides_binary_java_info,
29+
],
30+
)

‎java/test/private/android_support_tests.bzl

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def _test_enable_implicit_sourceless_deps_exports_compatibility(name):
6262
def _test_enable_implicit_sourceless_deps_exports_compatibility_impl(env, targets):
6363
base_info = java_info_subject.from_target(env, targets.base)
6464
transformed_info = java_info_subject.from_target(env, targets.transformed)
65-
transformed_info.compilation_args().equals(base_info.compilation_args())
65+
transformed_info.compilation_args().equals_subject(base_info.compilation_args())
6666
base_info.plugins().processor_jars().contains_exactly(["{package}/libmy_plugin.jar"])
6767
transformed_info.plugins().processor_jars().contains_exactly([])
6868

‎java/test/testutil/java_info_subject.bzl

+7-5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ def _new_java_info_subject(java_info, meta):
88
public = struct(
99
compilation_args = lambda: _new_java_compilation_args_subject(self.actual, self.meta),
1010
plugins = lambda: _new_java_info_plugins_subject(self.actual, self.meta),
11+
is_binary = lambda: subjects.bool(getattr(java_info, "_is_binary", False), self.meta.derive("_is_binary")),
1112
)
1213
return public
1314

@@ -20,30 +21,31 @@ def _java_info_subject_from_target(env, target):
2021
))
2122

2223
def _new_java_compilation_args_subject(java_info, meta):
24+
is_binary = getattr(java_info, "_is_binary", False)
2325
actual = struct(
2426
transitive_runtime_jars = java_info.transitive_runtime_jars,
2527
compile_jars = java_info.compile_jars,
2628
transitive_compile_time_jars = java_info.transitive_compile_time_jars,
2729
full_compile_jars = java_info.full_compile_jars,
2830
_transitive_full_compile_time_jars = java_info._transitive_full_compile_time_jars,
2931
_compile_time_java_dependencies = java_info._compile_time_java_dependencies,
30-
_is_binary = getattr(java_info, "_is_binary", False),
31-
)
32+
) if not is_binary else None
3233
self = struct(
3334
actual = actual,
3435
meta = meta,
3536
)
3637
return struct(
3738
equals = lambda other: _java_compilation_args_equals(self, other),
39+
equals_subject = lambda other: _java_compilation_args_equals(self, other.actual),
3840
self = self,
3941
actual = actual,
4042
)
4143

4244
def _java_compilation_args_equals(self, other):
43-
if self.actual == other.actual:
45+
if self.actual == other:
4446
return
45-
for attr in dir(other.actual):
46-
other_attr = getattr(other.actual, attr)
47+
for attr in dir(other):
48+
other_attr = getattr(other, attr)
4749
this_attr = getattr(self.actual, attr)
4850
if this_attr != other_attr:
4951
self.meta.derive(attr).add_failure(

0 commit comments

Comments
 (0)
Please sign in to comment.