blob: 8b6290b60a4a938a88dede4a187fd95fa57c9fd6 [file] [edit]
load("@rules_testing//lib:util.bzl", "util")
load("//cc/toolchains:args.bzl", "cc_args")
load("//cc/toolchains/impl:variables.bzl", "cc_variable", "types")
load("//tests/rule_based_toolchain:analysis_test_suite.bzl", "analysis_test_suite")
load("//tests/rule_based_toolchain:testing_rules.bzl", "expect_failure_test")
load(":args_test.bzl", "TARGETS", "TESTS")
cc_variable(
name = "some_variable",
type = types.string,
)
util.helper_target(
cc_args,
name = "simple",
actions = ["//tests/rule_based_toolchain/actions:all_compile"],
args = [
"--foo",
"foo",
],
data = [
"//tests/rule_based_toolchain/testdata:file1",
"//tests/rule_based_toolchain/testdata:multiple",
],
env = {"BAR": "bar"},
)
util.helper_target(
cc_args,
name = "env_only",
actions = ["//tests/rule_based_toolchain/actions:all_compile"],
data = [
"//tests/rule_based_toolchain/testdata:file1",
"//tests/rule_based_toolchain/testdata:multiple",
],
env = {"BAR": "bar"},
)
util.helper_target(
cc_args,
name = "env_only_requires",
actions = ["//cc/toolchains/actions:compile_actions"],
env = {"BAR": "{dependency_file}"},
format = {"dependency_file": "//cc/toolchains/variables:dependency_file"},
requires_not_none = "//cc/toolchains/variables:dependency_file",
)
util.helper_target(
cc_args,
name = "iterate_over_optional",
actions = ["//cc/toolchains/actions:compile_actions"],
args = ["{user_compile_flags}"],
format = {"user_compile_flags": "//cc/toolchains/variables:user_compile_flags"},
iterate_over = "//cc/toolchains/variables:user_compile_flags",
requires_not_none = "//cc/toolchains/variables:user_compile_flags",
)
util.helper_target(
cc_args,
name = "with_dir",
actions = ["//tests/rule_based_toolchain/actions:all_compile"],
allowlist_include_directories = ["//tests/rule_based_toolchain/testdata:directory"],
args = ["--secret-builtin-include-dir"],
)
util.helper_target(
cc_args,
name = "with_dir_and_data",
actions = ["//tests/rule_based_toolchain/actions:all_compile"],
allowlist_include_directories = ["//tests/rule_based_toolchain/testdata:directory"],
args = ["--secret-builtin-include-dir"],
data = ["//tests/rule_based_toolchain/testdata:directory"],
)
util.helper_target(
cc_args,
name = "good_env_format",
actions = ["//cc/toolchains/actions:compile_actions"],
env = {"FOO": "{gcov_gcno_file}"},
format = {"gcov_gcno_file": "//cc/toolchains/variables:gcov_gcno_file"},
)
util.helper_target(
cc_args,
name = "good_env_format_optional",
actions = ["//cc/toolchains/actions:compile_actions"],
env = {"FOO": "{dependency_file}"},
format = {"dependency_file": "//cc/toolchains/variables:dependency_file"},
requires_not_none = "//cc/toolchains/variables:dependency_file",
)
util.helper_target(
cc_args,
name = "bad_env_format_list",
actions = ["//cc/toolchains/actions:source_compile_actions"],
env = {"FOO": "{preprocessor_defines}"},
format = {"preprocessor_defines": "//cc/toolchains/variables:preprocessor_defines"},
tags = ["manual"],
)
expect_failure_test(
name = "bad_env_format_list_test",
failure_message = "format only works on string, file, or directory type variables, but preprocessor_defines has type List[string]",
target = ":bad_env_format_list",
)
util.helper_target(
cc_args,
name = "bad_env_format_optional",
actions = ["//cc/toolchains/actions:compile_actions"],
env = {"FOO": "{user_compile_flags}"},
format = {"user_compile_flags": "//cc/toolchains/variables:user_compile_flags"},
tags = ["manual"],
)
expect_failure_test(
name = "bad_env_format_optional_test",
failure_message = "format only works on string, file, or directory type variables, but user_compile_flags has type List[string]",
target = ":bad_env_format_optional",
)
util.helper_target(
cc_args,
name = "bad_env_format_wrong_action",
actions = ["//cc/toolchains/actions:compile_actions"],
env = {"FOO": "{runtime_solib_name}"},
format = {"runtime_solib_name": "//cc/toolchains/variables:runtime_solib_name"},
tags = ["manual"],
)
expect_failure_test(
name = "bad_env_format_wrong_action_test",
failure_message = "runtime_solib_name is inaccessible from the action",
target = ":bad_env_format_wrong_action",
)
genrule(
name = "generated_file",
outs = ["generated_file.txt"],
cmd = "echo 'generated content' > $@",
)
util.helper_target(
cc_args,
name = "genrule_data_with_env_format",
actions = ["//tests/rule_based_toolchain/actions:all_compile"],
data = [":generated_file"],
env = {"GENERATED_PATH": "{generated_file}"},
format = {"generated_file": ":generated_file"},
)
util.helper_target(
cc_args,
name = "directory_format_in_args",
actions = ["//tests/rule_based_toolchain/actions:all_compile"],
args = ["-resource-dir={resource_dir}"],
data = ["//tests/rule_based_toolchain/testdata:directory"],
format = {"resource_dir": "//tests/rule_based_toolchain/testdata:directory"},
)
analysis_test_suite(
name = "test_suite",
targets = TARGETS,
tests = TESTS,
)