| load("//cc/toolchains:nested_args.bzl", "cc_nested_args") | |
| load("//cc/toolchains/impl:variables.bzl", "cc_builtin_variables", "cc_variable", "types") | |
| load("//tests/rule_based_toolchain:analysis_test_suite.bzl", "analysis_test_suite") | |
| load(":variables_test.bzl", "TARGETS", "TESTS") | |
| cc_variable( | |
| name = "str", | |
| type = types.string, | |
| ) | |
| cc_variable( | |
| name = "optional_list", | |
| type = types.option(types.list(types.string)), | |
| ) | |
| cc_variable( | |
| name = "str_list", | |
| type = types.list(types.string), | |
| ) | |
| cc_variable( | |
| name = "str_option", | |
| type = types.option(types.string), | |
| ) | |
| cc_variable( | |
| name = "struct", | |
| actions = ["//tests/rule_based_toolchain/actions:c_compile"], | |
| type = types.struct( | |
| nested_str = types.string, | |
| nested_str_list = types.list(types.string), | |
| ), | |
| ) | |
| cc_variable( | |
| name = "struct_list", | |
| actions = ["//tests/rule_based_toolchain/actions:c_compile"], | |
| type = types.list(types.struct( | |
| nested_str = types.string, | |
| nested_str_list = types.list(types.string), | |
| )), | |
| ) | |
| cc_variable( | |
| name = "struct_list.nested_str_list", | |
| type = types.unknown, | |
| ) | |
| # Dots in the name confuse the test rules. | |
| # It would end up generating targets.struct_list.nested_str_list. | |
| alias( | |
| name = "nested_str_list", | |
| actual = ":struct_list.nested_str_list", | |
| ) | |
| cc_nested_args( | |
| name = "simple_str", | |
| args = ["{str}"], | |
| format = {"str": ":str"}, | |
| ) | |
| cc_nested_args( | |
| name = "list_not_allowed", | |
| args = ["{s}"], | |
| format = {"s": ":str_list"}, | |
| ) | |
| cc_nested_args( | |
| name = "iterate_over_list", | |
| args = ["{}"], | |
| iterate_over = ":str_list", | |
| ) | |
| cc_nested_args( | |
| name = "iterate_over_non_list", | |
| args = ["--foo"], | |
| iterate_over = ":str", | |
| ) | |
| cc_nested_args( | |
| name = "str_not_a_bool", | |
| args = ["--foo"], | |
| requires_true = ":str", | |
| ) | |
| cc_nested_args( | |
| name = "str_equal", | |
| args = ["--foo"], | |
| requires_equal = ":str", | |
| requires_equal_value = "bar", | |
| ) | |
| cc_nested_args( | |
| name = "inner_iter", | |
| args = ["{}"], | |
| iterate_over = ":struct_list.nested_str_list", | |
| ) | |
| cc_nested_args( | |
| name = "outer_iter", | |
| iterate_over = ":struct_list", | |
| nested = [":inner_iter"], | |
| ) | |
| cc_nested_args( | |
| name = "bad_inner_iter", | |
| args = ["{s}"], | |
| format = {"s": ":struct_list.nested_str_list"}, | |
| ) | |
| cc_nested_args( | |
| name = "bad_outer_iter", | |
| iterate_over = ":struct_list", | |
| nested = [":bad_inner_iter"], | |
| ) | |
| cc_nested_args( | |
| name = "bad_nested_optional", | |
| args = ["{s}"], | |
| format = {"s": ":str_option"}, | |
| ) | |
| cc_nested_args( | |
| name = "good_nested_optional", | |
| args = ["{s}"], | |
| format = {"s": ":str_option"}, | |
| requires_not_none = ":str_option", | |
| ) | |
| cc_nested_args( | |
| name = "optional_list_iter", | |
| args = ["--foo"], | |
| iterate_over = ":optional_list", | |
| ) | |
| cc_builtin_variables( | |
| name = "variables", | |
| srcs = [ | |
| ":optional_list", | |
| ":str", | |
| ":str_list", | |
| ":str_option", | |
| ":struct", | |
| ":struct_list", | |
| ], | |
| ) | |
| cc_builtin_variables( | |
| name = "nested_variables", | |
| srcs = [ | |
| ":struct_list.nested_str_list", | |
| ], | |
| ) | |
| analysis_test_suite( | |
| name = "test_suite", | |
| targets = TARGETS, | |
| tests = TESTS, | |
| ) |