我有一个像这样的py_binary
规则:
py_binary(
name = "testInputs",
srcs = ["testInputs.py"],
)
和这样的
cc_test
:cc_test(
name = "test",
src = ["test.cc"],
data = [":testInputs"],
)
test.cc旁边需要一个由
input.txt
生成的输入文件(例如testInputs.py
)。我希望
testInputs
可以运行并将输入文件提供给test
。如here所述,我尝试依赖
testInputs
部分中的data
。但是测试未在附近找到输入文件。tree bazel-out | grep -F input.txt
的结果表明,即使testInput
规则也根本没有运行-因为input.txt
文件根本不存在。 最佳答案
data = [":testInputs"]
上的cc_test
将使py_binary
本身可用于cc_test
,而不是py_binary
运行时可能产生的任何内容。
您会想要这样的东西:
cc_test(
name = "test",
src = ["test.cc"],
data = [":test_input.txt"],
)
genrule(
name = "gen_test_inputs",
tools = [":test_input_generator"],
outs = ["test_input.txt"],
cmd = "$(location :test_input_generator) $@"
)
py_binary(
name = "test_input_generator",
srcs = ["test_input_generator.py"],
)