在Bazel中,可以使用sh_test
规则来运行py_binary
生成输入文件。下面是一个示例代码:
假设项目结构如下:
├── WORKSPACE
├── BUILD.bazel
├── generate_data.sh
└── src
├── BUILD.bazel
└── main.py
generate_data.sh文件用于运行py_binary生成输入文件。在BUILD.bazel文件中,我们将定义一个sh_test
规则来运行generate_data.sh脚本并生成输入文件。
WORKSPACE文件中需要添加以下内容来引入py_binary
规则所需的依赖项:
load("@rules_python//python:defs.bzl", "py_binary")
BUILD.bazel文件中的内容如下:
sh_binary(
name = "generate_data",
srcs = ["generate_data.sh"],
data = [":main.py"],
visibility = ["//visibility:public"],
)
sh_test(
name = "generate_data_test",
srcs = [],
size = "small",
tags = ["manual"],
data = [":generate_data"],
testonly = True,
)
generate_data.sh脚本内容如下:
#!/bin/bash
# 生成输入文件
./main.py > input.txt
然后,你可以通过运行以下命令来生成输入文件并运行测试:
bazel test //src:generate_data_test
注意:在运行测试之前,确保已经给generate_data.sh脚本添加了执行权限。可以使用chmod +x generate_data.sh
命令来添加执行权限。
下一篇:Bazel:设置包