Bazel 的测试:是否有 CppCompileAction.java 的测试?

Tests of Bazel: is there any tests for CppCompileAction.java?

在工作中学习和使用了一段时间的Bazel。由于某种原因,我在src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java上做了一些开发。之后,我计划为新更改添加几个测试。这时我才意识到,在相应的包(src/test/java/com/google/devtools/build/lib/rules/cpp/)中,并没有执行任何动作。我期待的是以下内容

CppCompileAction action = ... CppCompileActionBuilder.build(...);
ActionResult result = action.execute(someActionExecutionContext);

有什么原因吗?如果我想创建这样的测试,有什么建议吗?谢谢!

Bazel 的 java 测试实际上并不执行操作——它们模拟构建并验证已注册操作的内容,但实际上并不执行这些操作。

其中一个原因是,如果 java 测试执行 C++ 编译操作,测试套件将依赖于 C++ 工具。

作为替代方案,我们有各种 shell (.sh) 测试套件,可以端到端地测试 Bazel,包括操作执行。

Here 是 java 测试套件验证编译操作的示例。

.. 和 Here 是 shell 测试的示例,它完全测试 C++ 构建, 执行操作。

希望对您有所帮助!