1"""Starlark unit tests for the bootstrap process wrapper""" 2 3load("@bazel_skylib//lib:unittest.bzl", "analysistest") 4load("//test/unit:common.bzl", "assert_action_mnemonic") 5 6def _enable_sh_toolchain_test_impl(ctx): 7 env = analysistest.begin(ctx) 8 target = analysistest.target_under_test(env) 9 10 if ctx.attr.expected_ext == ".bat": 11 assert_action_mnemonic(env, target.actions[0], "ExecutableSymlink") 12 else: 13 assert_action_mnemonic(env, target.actions[0], "TemplateExpand") 14 15 return analysistest.end(env) 16 17_enable_sh_toolchain_test = analysistest.make( 18 _enable_sh_toolchain_test_impl, 19 config_settings = { 20 str(Label("//rust/settings:experimental_use_sh_toolchain_for_bootstrap_process_wrapper")): True, 21 }, 22 attrs = { 23 "expected_ext": attr.string( 24 doc = "The expected extension for the bootstrap script.", 25 mandatory = True, 26 values = [ 27 ".bat", 28 ".sh", 29 ], 30 ), 31 }, 32) 33 34def _disable_sh_toolchain_test_impl(ctx): 35 env = analysistest.begin(ctx) 36 target = analysistest.target_under_test(env) 37 38 assert_action_mnemonic(env, target.actions[0], "ExecutableSymlink") 39 40 return analysistest.end(env) 41 42_disable_sh_toolchain_test = analysistest.make( 43 _disable_sh_toolchain_test_impl, 44 config_settings = { 45 str(Label("//rust/settings:experimental_use_sh_toolchain_for_bootstrap_process_wrapper")): False, 46 }, 47) 48 49def process_wrapper_bootstrap_test_suite(name, **kwargs): 50 """Entry-point macro called from the BUILD file. 51 52 Args: 53 name (str): Name of the macro. 54 **kwargs (dict): Additional keyword arguments. 55 """ 56 57 _enable_sh_toolchain_test( 58 name = "enable_sh_toolchain_test", 59 target_under_test = Label("//util/process_wrapper:bootstrap_process_wrapper"), 60 expected_ext = select({ 61 "@platforms//os:windows": ".bat", 62 "//conditions:default": ".sh", 63 }), 64 ) 65 66 _disable_sh_toolchain_test( 67 name = "disable_sh_toolchain_test", 68 target_under_test = Label("//util/process_wrapper:bootstrap_process_wrapper"), 69 ) 70 71 native.test_suite( 72 name = name, 73 tests = [ 74 ":disable_sh_toolchain_test", 75 ":enable_sh_toolchain_test", 76 ], 77 **kwargs 78 ) 79