我正在尝试使用bazel restricted_to属性进行测试。使用[bazel] restricted_to属性
我希望测试只能在特定的cpu = build上运行。
为了使这个稍微复杂一些,CPU类型在我们
/tools/cpp/CROSSTOOL file (cpu=armhf-debian).
我已经没有运气猜测restricted_to参数 的语法(我的第一个猜测是//cpu:armhf-debian
定义,它只是看着对于CPU封装)
有什么建议吗?
我正在尝试使用bazel restricted_to属性进行测试。使用[bazel] restricted_to属性
我希望测试只能在特定的cpu = build上运行。
为了使这个稍微复杂一些,CPU类型在我们
/tools/cpp/CROSSTOOL file (cpu=armhf-debian).
我已经没有运气猜测restricted_to参数 的语法(我的第一个猜测是//cpu:armhf-debian
定义,它只是看着对于CPU封装)
有什么建议吗?
关于restricted_to以及其他适用于environment_group和environment_group的规则,没有太多文档。这主要是因为它的用例对于Google的存储库设置非常具体,我们正在用更灵活的系统替换它们。
要使用restricted_to,您需要定义几个环境规则和一个environment_group来包含它们,然后指定测试限制在哪个环境,最后始终使用“--target_environment”标志指定当前环境组。这将是这个样子:
environment(name = "x86")
environment(name = "ppc")
environment_group(
name = "cpus",
defaults = [":x86"],
environments = [
":x86",
":ppc",
])
cc_test(
name = "test",
other config
restricted_to = [":ppc"],)
然后,您可以运行测试像这样:
bazel test --target_environment=//:ppc //:test
,以获得环境检查。
这并不是非常有用,因为运行测试的人还必须正确设置“--target_environment”。
一种更好的方式来禁用测试,使用目前支持的代码,是用config_setting和选择,像这样:
config_setting(
name = "k8",
values = {"cpu": "k8"})
config_setting(
name = "ppc",
values = {"cpu":, "ppc")
cc_test(
name = "test",
other config
srcs = [other sources] +
select({
"//:x86": ["x86_test_src.cpp"],
"//:ppc": ["ppc_test_src.cpp"],
"//conditions:default": ["default_test_src.cpp"],
})
config_setting将基于当前的“--cpu”标志的值。通过更改select中包含的文件,可以控制测试中包含的每个cpu设置的文件。
很明显,这些不必位于同一个包中,而是应用通常的Bazel可见性规则。有关config_setting的示例,请参阅Bazel的src/BUILD;有关在select中使用它的示例,请参见src/test/cpp/BUILD。
我们在平台上努力工作,这是一种更好的方式来描述和查询Bazel的执行环境,我们将确保发布文档和博客文章,以便人们可以测试。