Refactor deps/runtime_deps collection
This keeps only the common bits[1] in java_helper.bzl and do the rest in the respective rule classes
PiperOrigin-RevId: 515720416
Change-Id: I5a7a5ccb4dc24bf7899c252fcb12637dd487355e
diff --git a/src/main/starlark/builtins_bzl/bazel/java/bazel_java_binary.bzl b/src/main/starlark/builtins_bzl/bazel/java/bazel_java_binary.bzl
index 3074ab6..83116c5 100644
--- a/src/main/starlark/builtins_bzl/bazel/java/bazel_java_binary.bzl
+++ b/src/main/starlark/builtins_bzl/bazel/java/bazel_java_binary.bzl
@@ -23,8 +23,8 @@
JavaInfo = _builtins.toplevel.JavaInfo
def _bazel_java_binary_impl(ctx):
- deps = helper.collect_all_targets_as_compile_deps(ctx)
- runtime_deps = helper.collect_all_targets_as_runtime_deps(ctx)
+ deps = _collect_all_targets_as_deps(ctx, classpath_type = "compile_only")
+ runtime_deps = _collect_all_targets_as_deps(ctx)
main_class = _check_and_get_main_class(ctx)
coverage_main_class = main_class
@@ -71,7 +71,7 @@
runfiles = default_info.runfiles
- test_support = _get_test_support(ctx)
+ test_support = helper.get_test_support(ctx)
if test_support:
runfiles = runfiles.merge(test_support[DefaultInfo].default_runfiles)
@@ -83,10 +83,16 @@
return providers.values()
-def _get_test_support(ctx):
- if ctx.attr.create_executable and ctx.attr.use_testrunner:
- return ctx.attr._test_support
- return None
+def _collect_all_targets_as_deps(ctx, classpath_type = "all"):
+ deps = helper.collect_all_targets_as_deps(ctx, classpath_type = classpath_type)
+
+ if classpath_type == "compile_only" and ctx.fragments.java.enforce_explicit_java_test_deps():
+ return deps
+
+ test_support = helper.get_test_support(ctx)
+ if test_support:
+ deps.append(test_support)
+ return deps
def _check_and_get_main_class(ctx):
create_executable = ctx.attr.create_executable
@@ -150,7 +156,7 @@
runfiles_enabled = helper.runfiles_enabled(ctx)
coverage_enabled = ctx.configuration.coverage_enabled
- test_support = _get_test_support(ctx)
+ test_support = helper.get_test_support(ctx)
test_support_jars = test_support[JavaInfo].transitive_runtime_jars if test_support else depset()
classpath = depset(
transitive = [
diff --git a/src/main/starlark/builtins_bzl/common/java/java_helper.bzl b/src/main/starlark/builtins_bzl/common/java/java_helper.bzl
index 102440b..8f2a515 100644
--- a/src/main/starlark/builtins_bzl/common/java/java_helper.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/java_helper.bzl
@@ -19,12 +19,6 @@
load(":common/paths.bzl", "paths")
load(":common/cc/cc_common.bzl", "cc_common")
-def _collect_all_targets_as_runtime_deps(ctx):
- return _collect_all_targets_as_deps(ctx)
-
-def _collect_all_targets_as_compile_deps(ctx):
- return _collect_all_targets_as_deps(ctx, classpath_type = "compile_only")
-
def _collect_all_targets_as_deps(ctx, classpath_type = "all"):
deps = []
if not classpath_type == "compile_only":
@@ -35,12 +29,6 @@
deps.extend(ctx.attr.deps or [])
- if (
- ctx.fragments.java.add_test_support_to_compile_deps and
- hasattr(ctx.attr, "_test_support") and ctx.attr._test_support
- ):
- deps.append(ctx.attr._test_support)
-
launcher = _filter_launcher_for_target(ctx)
if launcher:
deps.append(launcher)
@@ -272,9 +260,13 @@
def _runfiles_enabled(ctx):
return ctx.configuration.runfiles_enabled()
+def _get_test_support(ctx):
+ if ctx.attr.create_executable and ctx.attr.use_testrunner:
+ return ctx.attr._test_support
+ return None
+
util = struct(
- collect_all_targets_as_runtime_deps = _collect_all_targets_as_runtime_deps,
- collect_all_targets_as_compile_deps = _collect_all_targets_as_compile_deps,
+ collect_all_targets_as_deps = _collect_all_targets_as_deps,
filter_launcher_for_target = _filter_launcher_for_target,
launcher_artifact_for_target = _launcher_artifact_for_target,
check_and_get_main_class = _check_and_get_main_class,
@@ -291,4 +283,5 @@
is_absolute_path = _is_absolute_path,
is_windows = _is_windows,
runfiles_enabled = _runfiles_enabled,
+ get_test_support = _get_test_support,
)