Bazel:在测试之前如何运行py_binary生成输入文件

时间:2019-08-14 14:59:25

标签: python c++ testing bazel

我有一个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文件根本不存在。

1 个答案:

答案 0 :(得分:2)

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"],
)