我正在尝试使用bazel restricted_to属性进行测试。
我希望测试只在特定的cpu = build上运行。
为了使这个问题更加复杂,cpu类型在我们的
/tools/cpp/CROSSTOOL file (cpu=armhf-debian).我猜不出restricted_to参数的语法(我的第一个猜测是//cpu:armhf-debian,它只是寻找一个cpu包)
有什么建议吗?
发布于 2017-07-31 19:09:15
关于restricted_to和它所使用的其他规则,环境和environment_group并没有太多的文档。这主要是因为它们所针对的用例非常特定于Google的存储库设置,我们正在用更灵活的系统替换它们。
要使用restricted_to,您需要定义几条环境规则,以及一个包含它们的environment_group,然后指定测试限制在哪个环境中,最后始终使用“-塔吉特_环境”标志来指定当前环境组。看起来是这样的:
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的config_setting,在select中使用Bazel的示例为src/test/cpp/BUILD。
我们正在平台上努力工作,这是描述和查询Bazel执行环境的更好方法,我们将确保在准备好供人们测试时发布文档和博客文章。
https://stackoverflow.com/questions/45381217
复制相似问题