blob: 189e1d2bf1355a648cbeb6f493aa95786fb93af1 [file]
"""Custom rules_testing subject for java_binary/java_test executable output"""
load("@rules_testing//lib:truth.bzl", "subjects")
def _of_target(env, target):
executable = target[DefaultInfo].files_to_run.executable.short_path
action_subject = env.expect.that_target(target).action_generating(executable)
public = struct(
java_start_class = lambda: _java_start_class_subject(action_subject),
)
return public
def _java_start_class_subject(action):
if action.actual.substitutions:
return action.substitutions().get("%java_start_class%", factory = subjects.str)
else:
# Windows
return action.argv().transform(
filter = lambda e: e.startswith("java_start_class="),
map_each = lambda e: e.split("=", 1)[1],
desc = "java_start_class",
).offset(0, factory = subjects.str)
expect_that_executable = struct(
of_target = _of_target,
)