Prepare for Starlarkifying more `java_library` and `java_binary` tests (ignore-relnotes) PiperOrigin-RevId: 879015156 Change-Id: I3f1d0bcf272e21de4861096fa570d98ce461f7fa
diff --git a/test/java/common/rules/common_launcher_java_binary_tests.bzl b/test/java/common/rules/common_launcher_java_binary_tests.bzl new file mode 100644 index 0000000..34c6e3f --- /dev/null +++ b/test/java/common/rules/common_launcher_java_binary_tests.bzl
@@ -0,0 +1,28 @@ +"""Parameterized tests for java_binary with --java_launcher""" + +load("@rules_testing//lib:analysis_test.bzl", "analysis_test") +load("@rules_testing//lib:util.bzl", "util") +load("//java:java_binary.bzl", "java_binary") + +def _test_java_binary_non_executable_rule_outputs(name): + util.helper_target( + java_binary, + name = name + "/test_app_noexec", + srcs = ["InputFile.java"], + create_executable = 0, + ) + + analysis_test( + name = name, + impl = _test_java_binary_non_executable_rule_outputs_impl, + target = name + "/test_app_noexec", + ) + +def _test_java_binary_non_executable_rule_outputs_impl(env, target): + env.expect.that_target(target).default_outputs().contains_exactly([ + "{package}/{name}.jar", + ]) + +JAVA_BINARY_LAUNCHER_TESTS = [ + _test_java_binary_non_executable_rule_outputs, +]
diff --git a/test/java/common/rules/common_launcher_java_library_tests.bzl b/test/java/common/rules/common_launcher_java_library_tests.bzl new file mode 100644 index 0000000..8f0ed22 --- /dev/null +++ b/test/java/common/rules/common_launcher_java_library_tests.bzl
@@ -0,0 +1,27 @@ +"""Parameterized tests for java_library with --java_launcher""" + +load("@rules_testing//lib:analysis_test.bzl", "analysis_test") +load("@rules_testing//lib:util.bzl", "util") +load("//java:java_library.bzl", "java_library") + +def _test_java_library_rule_outputs(name): + util.helper_target( + java_library, + name = name + "/test_lib", + srcs = ["A.java"], + ) + + analysis_test( + name = name, + impl = _test_java_library_rule_outputs_impl, + target = name + "/test_lib", + ) + +def _test_java_library_rule_outputs_impl(env, target): + env.expect.that_target(target).default_outputs().contains_exactly([ + "{package}/lib{name}.jar", + ]) + +JAVA_LIBRARY_LAUNCHER_TESTS = [ + _test_java_library_rule_outputs, +]
diff --git a/test/java/common/rules/java_binary_tests.bzl b/test/java/common/rules/java_binary_tests.bzl index 10728fb..7ee9eb1 100644 --- a/test/java/common/rules/java_binary_tests.bzl +++ b/test/java/common/rules/java_binary_tests.bzl
@@ -8,6 +8,7 @@ load("@rules_testing//lib:util.bzl", "util") load("//java:java_binary.bzl", "java_binary") load("//java:java_library.bzl", "java_library") +load("//test/java/common/rules:common_launcher_java_binary_tests.bzl", "JAVA_BINARY_LAUNCHER_TESTS") load("//test/java/testutil:helper.bzl", "always_passes") load("//test/java/testutil:java_info_subject.bzl", "java_info_subject") load("//test/java/testutil:rules/custom_java_info_rule.bzl", "custom_java_info_rule") @@ -251,7 +252,7 @@ def java_binary_tests(name): test_suite( - name = name, + name = "_basic_" + name, tests = [ _test_java_binary_provides_binary_java_info, _test_stamp_conversion_does_not_override_int, @@ -261,3 +262,17 @@ _test_java_binary_can_set_transitive_validation, ], ) + + # TODO: unset --java_launcher explicitly + test_suite( + name = "_jdk_launcher_" + name, + tests = JAVA_BINARY_LAUNCHER_TESTS, + ) + + native.test_suite( + name = name, + tests = [ + "_basic_" + name, + "_jdk_launcher_" + name, + ], + )
diff --git a/test/java/common/rules/java_library_tests.bzl b/test/java/common/rules/java_library_tests.bzl index 64e1743..77980f2 100644 --- a/test/java/common/rules/java_library_tests.bzl +++ b/test/java/common/rules/java_library_tests.bzl
@@ -9,6 +9,8 @@ load("//java:java_library.bzl", "java_library") load("//java:java_plugin.bzl", "java_plugin") load("//java/common:java_info.bzl", "JavaInfo") +load("//test/java/common/rules:common_launcher_java_library_tests.bzl", "JAVA_LIBRARY_LAUNCHER_TESTS") +load("//test/java/testutil:helper.bzl", "always_passes") load("//test/java/testutil:java_info_subject.bzl", "java_info_subject") load("//test/java/testutil:javac_action_subject.bzl", "javac_action_subject") load("//test/java/testutil:rules/custom_java_info_rule.bzl", "custom_java_info_rule") @@ -312,6 +314,10 @@ assert_lib.dynamic_library().basename().contains("mynativedep") def _test_strict_java_deps(name, strict_java_deps): + if not bazel_features.rules.analysis_tests_can_transition_on_experimental_incompatible_flags: + always_passes(name) + return + util.helper_target( java_library, name = name + "/jl", @@ -344,22 +350,31 @@ _test_strict_java_deps(name, "ERROR") def java_library_tests(name): - tests = [ - _test_exposes_plugins, - _test_exposes_java_info, - _test_java_info_propagation, - _test_java_library_attributes, - _test_propagates_direct_native_libraries, - _test_exposes_native_library_info, - ] - if bazel_features.rules.analysis_tests_can_transition_on_experimental_incompatible_flags: - tests += [ + test_suite( + name = "_basic_" + name, + tests = [ + _test_exposes_plugins, + _test_exposes_java_info, + _test_java_info_propagation, + _test_java_library_attributes, + _test_propagates_direct_native_libraries, + _test_exposes_native_library_info, _test_strict_java_deps_off, _test_strict_java_deps_warn, _test_strict_java_deps_error, - ] + ], + ) + # TODO: unset --java_launcher explicitly test_suite( + name = "_jdk_launcher_" + name, + tests = JAVA_LIBRARY_LAUNCHER_TESTS, + ) + + native.test_suite( name = name, - tests = tests, + tests = [ + "_basic_" + name, + "_jdk_launcher_" + name, + ], )