运行 bazel 测试时如何指定 "default" 目标标签

How to specify "default" target labels when running bazel test

我们正在考虑从 Make 迁移到 Bazel。为了使转换更容易,我希望 bazel test(无标志/选项)运行 当前目录的测试(如果有)。

因此,bazel test 将查找当前目录的 BUILD 文件,而不是 bazel test my_tests,查找任何 *_test 规则和 运行 规则。

您可以使用 all 目标模式来匹配当前包中的所有目标:bazel test :all

您可以在此处阅读更多相关信息:https://docs.bazel.build/versions/master/user-manual.html#target-patterns

但是请注意,如果当前包中没有测试目标,bazel 会报错:"ERROR: No test targets were found, yet testing was requested."。在这种情况下,bazel 将给出退出代码 4:https://docs.bazel.build/versions/master/user-manual.html#what-exit-code-will-i-get

我建议为 bazel test :all 创建一个名为 bazel-test 的别名。

如果你想完全按照你说的去做,那么你可以使用你自己的脚本。 当你 运行 “bazel”时,它实际上会查看当前工作区的工具目录下是否有名为“bazel”的脚本。因此,如果您在“$workspace/tools/bazel”下有一个可执行文件,bazel 将 运行 而不是 bazel 二进制文件本身。 这意味着您可以编写一个脚本来检查唯一的参数是否为“test”,如果是则调用“bazel-real test :all” 它还可以检查退出代码以查看是否没有测试(这是一个特定的错误代码)和 return 0 而不是