blob: 7e0e4ea571cd84e9b8bea8f627a5df8b790b5a3f [file]
"""Starlark unit tests for the bootstrap process wrapper"""
load("@bazel_skylib//lib:unittest.bzl", "analysistest")
load("//test/unit:common.bzl", "assert_action_mnemonic")
def _enable_sh_toolchain_test_impl(ctx):
env = analysistest.begin(ctx)
target = analysistest.target_under_test(env)
if ctx.attr.expected_ext == ".bat":
assert_action_mnemonic(env, target.actions[0], "ExecutableSymlink")
else:
assert_action_mnemonic(env, target.actions[0], "TemplateExpand")
return analysistest.end(env)
_enable_sh_toolchain_test = analysistest.make(
_enable_sh_toolchain_test_impl,
config_settings = {
str(Label("//rust/settings:experimental_use_sh_toolchain_for_bootstrap_process_wrapper")): True,
},
attrs = {
"expected_ext": attr.string(
doc = "The expected extension for the bootstrap script.",
mandatory = True,
values = [
".bat",
".sh",
],
),
},
)
def _disable_sh_toolchain_test_impl(ctx):
env = analysistest.begin(ctx)
target = analysistest.target_under_test(env)
assert_action_mnemonic(env, target.actions[0], "ExecutableSymlink")
return analysistest.end(env)
_disable_sh_toolchain_test = analysistest.make(
_disable_sh_toolchain_test_impl,
config_settings = {
str(Label("//rust/settings:experimental_use_sh_toolchain_for_bootstrap_process_wrapper")): False,
},
)
def process_wrapper_bootstrap_test_suite(name, **kwargs):
"""Entry-point macro called from the BUILD file.
Args:
name (str): Name of the macro.
**kwargs (dict): Additional keyword arguments.
"""
_enable_sh_toolchain_test(
name = "enable_sh_toolchain_test",
target_under_test = Label("//util/process_wrapper:bootstrap_process_wrapper"),
expected_ext = select({
"@platforms//os:windows": ".bat",
"//conditions:default": ".sh",
}),
)
_disable_sh_toolchain_test(
name = "disable_sh_toolchain_test",
target_under_test = Label("//util/process_wrapper:bootstrap_process_wrapper"),
)
native.test_suite(
name = name,
tests = [
":disable_sh_toolchain_test",
":enable_sh_toolchain_test",
],
**kwargs
)