Add a test for deploy jars with custom singlejar PiperOrigin-RevId: 878010346 Change-Id: I44216adca0c605f3bcadb5030f3524f144ca7d23
diff --git a/test/java/common/rules/BUILD b/test/java/common/rules/BUILD index 2311a3f..cc2cd33 100644 --- a/test/java/common/rules/BUILD +++ b/test/java/common/rules/BUILD
@@ -1,3 +1,4 @@ +load(":deploy_archive_builder_tests.bzl", "deploy_archive_builder_test_suite") load(":java_binary_tests.bzl", "java_binary_tests") load(":java_import_tests.bzl", "java_import_tests") load(":java_library_tests.bzl", "java_library_tests") @@ -7,6 +8,8 @@ package(default_applicable_licenses = ["@rules_java//:license"]) +deploy_archive_builder_test_suite(name = "deploy_archive_builder_tests") + merge_attrs_test_suite(name = "merge_attrs_tests") java_binary_tests(name = "java_binary_tests")
diff --git a/test/java/common/rules/deploy_archive_builder_tests.bzl b/test/java/common/rules/deploy_archive_builder_tests.bzl new file mode 100644 index 0000000..32e75e9 --- /dev/null +++ b/test/java/common/rules/deploy_archive_builder_tests.bzl
@@ -0,0 +1,92 @@ +"""Tests for DeployArchiveBuilder.""" + +load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite") +load("@rules_testing//lib:truth.bzl", "matching") +load("@rules_testing//lib:util.bzl", "util") +load("//java:java_binary.bzl", "java_binary") +load("//java/common:java_semantics.bzl", "semantics") +load("//java/toolchains:java_runtime.bzl", "java_runtime") +load("//java/toolchains:java_toolchain.bzl", "java_toolchain") + +def _declare_java_toolchain(*, name, **kwargs): + java_runtime_name = name + "/runtime" + util.helper_target( + java_runtime, + name = java_runtime_name, + ) + toolchain_attrs = { + "source_version": "6", + "target_version": "6", + "bootclasspath": ["rt.jar"], + "xlint": ["toto"], + "javacopts": ["-Xmaxerrs 500"], + "compatible_javacopts": { + "android": ["-XDandroidCompatible"], + "testonly": ["-XDtestOnly"], + "public_visibility": ["-XDpublicVisibility"], + }, + "tools": [":javac_canary.jar"], + "javabuilder": ":JavaBuilder_deploy.jar", + "header_compiler": ":turbine_canary_deploy.jar", + "header_compiler_direct": ":turbine_direct", + "singlejar": "singlejar", + "ijar": "ijar", + "genclass": "GenClass_deploy.jar", + "timezone_data": "tzdata.jar", + "header_compiler_builtin_processors": ["BuiltinProc1", "BuiltinProc2"], + "reduced_classpath_incompatible_processors": [ + "IncompatibleProc1", + "IncompatibleProc2", + ], + "java_runtime": java_runtime_name, + } + toolchain_attrs.update(kwargs) + util.helper_target( + java_toolchain, + name = name + "/java_toolchain", + **toolchain_attrs + ) + util.helper_target( + native.toolchain, + name = name + "/toolchain", + toolchain = name + "/java_toolchain", + toolchain_type = semantics.JAVA_TOOLCHAIN_TYPE, + ) + +def _test_custom_singlejar(name): + _declare_java_toolchain(name = name) + + util.helper_target( + java_binary, + name = name + "/binary", + srcs = [name + "/main.java"], + main_class = "com.google.test.main", + ) + + analysis_test( + name = name, + impl = _test_custom_singlejar_impl, + target = name + "/binary", + config_settings = { + "//command_line_option:extra_toolchains": [Label(name + "/toolchain")], + }, + # Starlark rules are only used with Bazel 8 onwards. + attr_values = {"tags": ["min_bazel_8"]}, + ) + +def _test_custom_singlejar_impl(env, target): + action = env.expect.that_target(target).action_named("JavaDeployJar") + action.inputs().contains_at_least_predicates( + [ + matching.file_path_matches("*/test_custom_singlejar/binary.jar"), + ], + ) + +def deploy_archive_builder_test_suite(name): + """Test suite for java_binary deploy archive.""" + test_suite( + name = name, + tests = [ + _test_custom_singlejar, + ], + )