| """Common test utils for java_proto_library tests. |
| This file is forked from tests/java_proto_library_tests.bzl""" |
| |
| load("@rules_java//java/common:java_info.bzl", "JavaInfo") |
| load("@rules_testing//lib:truth.bzl", "subjects") |
| load("@rules_testing//lib:util.bzl", "util") |
| load("//bazel/private/google:java_mutable_proto_library.bzl", "google_java_mutable_proto_aspect_services") |
| |
| # Using this test aspect to mimic the java_mutable_proto_library target. This is mainly used to test |
| # the java related actions created in the test that isn't possible to access in Starlark. |
| JAVA_MUTABLE_PROTO_TESTING_ASPECT = util.make_testing_aspect(aspects = [google_java_mutable_proto_aspect_services]) |
| |
| HAS_SERVICES_TEST_ATTRS = { |
| "has_services": attr.bool(default = True), |
| } |
| |
| def _filter_inpackage(file_depset, owner): |
| return depset([f for f in file_depset.to_list() if f.owner.package == owner.package]) |
| |
| def _java_info_subject(info, *, meta): |
| """Creates a new `JavaInfoSubject` for a JavaInfo provider instance. |
| |
| Args: |
| info: The JavaInfo object |
| meta: ExpectMeta object. |
| |
| Returns: |
| A `JavaInfoSubject` struct |
| """ |
| self = struct(actual = info, meta = meta) |
| public = struct( |
| actual = info, |
| transitive_source_jars = lambda *a, **k: subjects.depset_file( |
| self.actual.transitive_source_jars, |
| meta = self.meta.derive("transitive_source_jars()"), |
| ), |
| transitive_source_jars_in_package = lambda *a, **k: subjects.depset_file( |
| _filter_inpackage(self.actual.transitive_source_jars, meta.ctx.label), |
| meta = self.meta.derive("transitive_source_jars_in_package()"), |
| ), |
| transitive_runtime_jars = lambda *a, **k: subjects.depset_file( |
| self.actual.transitive_runtime_jars, |
| meta = self.meta.derive("transitive_runtime_jars()"), |
| ), |
| transitive_compile_time_jars = lambda *a, **k: subjects.depset_file( |
| self.actual.transitive_compile_time_jars, |
| meta = self.meta.derive("transitive_compile_time_jars()"), |
| ), |
| transitive_compile_time_jars_in_package = lambda *a, **k: subjects.depset_file( |
| _filter_inpackage(self.actual.transitive_compile_time_jars, meta.ctx.label), |
| meta = self.meta.derive("transitive_compile_time_jars_in_package()"), |
| ), |
| ) |
| return public |
| |
| java_info_subject_factory = struct( |
| type = JavaInfo, |
| name = "JavaInfo", |
| factory = _java_info_subject, |
| ) |