blob: 53ca0138b42fbc08de22067f29b46c0a93ebc83a [file] [log] [blame] [edit]
load(":default_test_toolchain.bzl", "bool_flag", "empty_toolchain")
package(default_visibility = ["//visibility:public"])
# The mandatory toolchain requirement of the default "test" exec group defined
# on every test rule.
# Register a toolchain for this type to influence the selection of the
# execution platform based on the target platform. ToolchainInfo provided by
# toolchain implementations is generally ignored, but test rules are free to
# define their own test toolchain types and specify different behavior.
toolchain_type(
name = "default_test_toolchain_type",
no_match_error = """By default, tests are executed on the first execution platform that \
matches all constraints specified by the target platform. Either register the target platform (or \
a platform with at least the same constraints) as an execution platform, or override the default \
behavior by registering a custom toolchain for \
@bazel_tools//tools/test:default_test_toolchain_type.""",
)
# A target that provides an empty platform_common.ToolchainInfo for use
# in test toolchains that do not need to carry any data, just
# constraints.
empty_toolchain(name = "empty_toolchain")
# Whether to register a default test toolchain for all test rules without
# an explicitly defined "test" exec group. This toolchain forces the
# execution platform to satisfy all constraints specified by the target
# platform.
bool_flag(
name = "incompatible_use_default_test_toolchain",
build_setting_default = True,
visibility = ["//visibility:private"],
)
config_setting(
name = "use_default_test_toolchain",
values = {
"use_target_platform_for_tests": "false",
},
flag_values = {
":incompatible_use_default_test_toolchain": "true",
},
visibility = ["//visibility:private"],
)
config_setting(
name = "use_legacy_test_toolchain_due_to_use_target_platform_for_tests",
values = {
"use_target_platform_for_tests": "true",
},
visibility = ["//visibility:private"],
)
config_setting(
name = "use_legacy_test_toolchain_due_to_incompatible_flag",
flag_values = {
":incompatible_use_default_test_toolchain": "false",
},
visibility = ["//visibility:private"],
)
# A toolchain that forces the execution platform to satisfy all constraints
# specified by the target platform.
toolchain(
name = "default_test_toolchain",
toolchain_type = ":default_test_toolchain_type",
use_target_platform_constraints = True,
target_settings = [":use_default_test_toolchain"],
toolchain = ":empty_toolchain",
visibility = ["//visibility:private"],
)
# A toolchain that allows a test action to run on any execution platform, which
# matches the behavior of Bazel before the introduction of the default test
# toolchain.
toolchain(
name = "legacy_test_toolchain",
toolchain_type = ":default_test_toolchain_type",
target_settings = [":use_legacy_test_toolchain_due_to_incompatible_flag"],
toolchain = ":empty_toolchain",
visibility = ["//visibility:private"],
)
toolchain(
name = "legacy_test_toolchain_use_target_platform_for_tests",
toolchain_type = ":default_test_toolchain_type",
target_settings = [":use_legacy_test_toolchain_due_to_use_target_platform_for_tests"],
toolchain = ":empty_toolchain",
visibility = ["//visibility:private"],
)
# Members of this filegroup shouldn't have duplicate basenames, otherwise
# TestRunnerAction#getRuntimeArtifact() will get confused.
# Deprecated, do not use.
filegroup(
name = "runtime",
srcs = ["test-setup.sh"],
)
filegroup(
name = "test_setup",
srcs = ["test-setup.sh"],
)
filegroup(
name = "test_xml_generator",
srcs = ["generate-xml.sh"],
)
filegroup(
name = "collect_coverage",
srcs = ["collect_coverage.sh"],
)
filegroup(
name = "collect_cc_coverage",
srcs = ["collect_cc_coverage.sh"],
)
filegroup(
name = "coverage_support",
srcs = ["collect_coverage.sh"],
)
alias(
name = "coverage_report_generator",
actual = "@remote_coverage_tools//:coverage_report_generator",
)
alias(
name = "lcov_merger",
actual = "@remote_coverage_tools//:lcov_merger",
)
filegroup(
name = "test_wrapper",
# "tw" is the Windows-native test wrapper. It has a short name because paths
# have short limits on Windows.
# On other platforms this binary is a no-op.
# See https://github.com/bazelbuild/bazel/issues/5508
srcs = select({
"@bazel_tools//src/conditions:windows": ["tw.exe"],
"//conditions:default": ["dummy.sh"],
}),
)
filegroup(
name = "xml_writer",
# "xml" is the Windows-native test XML writer. It has a short name because
# paths have short limits on Windows.
# On other platforms this binary is a no-op.
srcs = select({
"@bazel_tools//src/conditions:windows": ["xml.exe"],
"//conditions:default": ["dummy.sh"],
}),
)
filegroup(
name = "bzl_srcs",
srcs = [
"default_test_toolchain.bzl",
"extensions.bzl",
],
)