blob: 2a2e75455a378311d5d8d3e3d75122130a108342 [file] [log] [blame]
"""Tests for the java_runtime rule"""
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/toolchains:java_runtime.bzl", "java_runtime")
load("//test/java/testutil:java_runtime_info_subject.bzl", "java_runtime_info_subject")
def _test_java_runtime_simple(name):
util.helper_target(
java_runtime,
name = name + "/jvm-foo",
srcs = [
"foo/a",
"foo/b",
],
java_home = "foo",
)
analysis_test(
name = name,
impl = _test_java_runtime_simple_impl,
target = name + "/jvm-foo",
)
def _test_java_runtime_simple_impl(env, target):
java_runtime_info_subject.from_target(env, target).files().contains_exactly([
"{package}/foo/a",
"{package}/foo/b",
])
env.expect.that_target(target).data_runfiles().contains_exactly([
"{workspace}/{package}/foo/a",
"{workspace}/{package}/foo/b",
])
def _test_absolute_java_home_with_srcs(name):
util.helper_target(
java_runtime,
name = name + "/jvm",
srcs = ["dummy.txt"],
java_home = "/absolute/path",
)
analysis_test(
name = name,
impl = _test_absolute_java_home_with_srcs_impl,
target = name + "/jvm",
expect_failure = True,
)
def _test_absolute_java_home_with_srcs_impl(env, target):
env.expect.that_target(target).failures().contains_predicate(
matching.str_matches("'java_home' with an absolute path requires 'srcs' to be empty."),
)
def _test_absolute_java_home_with_java(name):
util.helper_target(
java_runtime,
name = name + "/jvm",
java = "bin/java",
java_home = "/absolute/path",
)
analysis_test(
name = name,
impl = _test_absolute_java_home_with_java_impl,
target = name + "/jvm",
expect_failure = True,
)
def _test_absolute_java_home_with_java_impl(env, target):
env.expect.that_target(target).failures().contains_predicate(
matching.str_matches("'java_home' with an absolute path requires 'java' to be empty."),
)
def _test_bin_java_path_name(name):
util.helper_target(
java_runtime,
name = name + "/jvm",
java = "java",
)
analysis_test(
name = name,
impl = _test_bin_java_path_name_impl,
target = name + "/jvm",
expect_failure = True,
)
def _test_bin_java_path_name_impl(env, target):
env.expect.that_target(target).failures().contains_predicate(
matching.str_matches("the path to 'java' must end in 'bin/java'."),
)
def _test_absolute_java_home(name):
util.helper_target(
java_runtime,
name = name + "/jvm",
java_home = "/absolute/path",
)
analysis_test(
name = name,
impl = _test_absolute_java_home_impl,
target = name + "/jvm",
)
def _test_absolute_java_home_impl(env, target):
java_runtime_info_subject.from_target(env, target).java_home().equals("/absolute/path")
def java_runtime_tests(name):
test_suite(
name = name,
tests = [
_test_java_runtime_simple,
_test_absolute_java_home_with_srcs,
_test_absolute_java_home_with_java,
_test_bin_java_path_name,
_test_absolute_java_home,
],
)