我有一个像这样的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"],
)

07-26 01:44