bazel - bazel 在不同的测试目标之间共享文件
问题描述
我知道 bazel 在隔离的沙箱中运行所有命令,但是,我想故意破坏它们。假设我有一个具有以下布局的项目:
.
├── BUILD
├── cpp
│ ├── BUILD
│ ├── foo.cpp
│ └── test_foo.cpp
├── python
│ ├── BUILD
│ ├── foo.py
│ └── test_foo.py
└── WORKSPACE
该文件python/BUILD
包含一个py_test
规则,该规则运行一些留下一些工件(假设是一些二进制文件)的 python 测试。该文件cpp/BUILD
包含一个cc_test
运行一些 cpp 测试的规则,这些测试需要 python 测试留下的工件。
问题是我怎么能做到这一点?如果可能的解决方案能够提供增量构建系统的所有优点,例如,如果它们比工件更旧,则不运行 python 测试等等,那就更好了。
解决方案
生成测试代码的标准方法是genrule,请参阅python 脚本的示例。有了genrule
目标(比如说//path/to:foo_gen
)之后,您所要做的就是将标签添加到cc_test
data
属性中:
cc_test(
data = ['/path/to:foo_gen'],
...
)
outs
的属性中指定的文件genrule
(参见上面的示例)将在路径中可用./path/to/file_specified_in_outs
推荐阅读
- reactjs - withRouter 返回哪个类型?
- java - Java中字符串连接的计数操作
- node.js - 使用 Node.js 签署数字签名
- sql-server - system.data.sqlclientexception:'@p2' 附近的语法不正确
- azure - Is it possible to use the Azure CLI for setting up a monitoring URL Ping test?
- c# - 从 ASP.NET MVC 应用程序将 docx 转换为 pdf
- python - 使用 Python 移动时间段并计算 Delta
- terraform - 在 Terraform 中创建现有 aws_instance 资源的列表
- python - 如何使用字典存储 Python 中方法生成的文件名?
- python - 使用绝对导入运行单个 Python 文件时出现 ModuleNotFoundError