如何验证某些代码没有';你不能用Bazel编译吗? 我有几块C++代码(模板、宏等),它们在使用某些方法时不打算编译。手工编写一段代码来完成不应该编译的事情,并验证它不应该编译是很容易的,但这不是自动化的。看来Bazel应该能够编译一段代码并自动验证它不编译为代码“BAZEL测试< /COD>”的一部分,这似乎是一个相当常见的情况下,C++代码。有没有一个内置的方法可以做到这一点 我试图避免使用我自己的SkyLyk规则生成一个shell脚本,它调用C++编译器,因为处理所有的参数BZEL传递给C++工具链是非常困难的。目前,一些其他相关问题意味着所有信息都不可用。

如何验证某些代码没有';你不能用Bazel编译吗? 我有几块C++代码(模板、宏等),它们在使用某些方法时不打算编译。手工编写一段代码来完成不应该编译的事情,并验证它不应该编译是很容易的,但这不是自动化的。看来Bazel应该能够编译一段代码并自动验证它不编译为代码“BAZEL测试< /COD>”的一部分,这似乎是一个相当常见的情况下,C++代码。有没有一个内置的方法可以做到这一点 我试图避免使用我自己的SkyLyk规则生成一个shell脚本,它调用C++编译器,因为处理所有的参数BZEL传递给C++工具链是非常困难的。目前,一些其他相关问题意味着所有信息都不可用。,bazel,Bazel,可能只是以错误的方式将代码作为cc_二进制目标创建测试,然后编写一个shell脚本或其他工具来调用Bazel来构建它们并检查返回代码。但这不是最干净的方式 因此,shell脚本将对Bazel进行一系列调用,以执行类似的操作。至少你不必弄清楚Bazel的编译器调用,但是你失去了Bazel良好的集成测试 bazel build //tests:test_that_should_fail_at_compile_time if [ $? != 0 ]; then echo "Test Passe

可能只是以错误的方式将代码作为cc_二进制目标创建测试,然后编写一个shell脚本或其他工具来调用Bazel来构建它们并检查返回代码。但这不是最干净的方式

因此,shell脚本将对Bazel进行一系列调用,以执行类似的操作。至少你不必弄清楚Bazel的编译器调用,但是你失去了Bazel良好的集成测试

bazel build //tests:test_that_should_fail_at_compile_time
if [ $? != 0 ]; then
    echo "Test Passed!"
fi

编写一个创建一个划痕工作空间的测试,并在其中创建和C++文件,然后在测试中调用BAZEL,并验证其退出代码和STDRR输出。 我们一直在用Bazel自己的集成测试做类似的事情。请参阅提交中的完整示例:测试数据依赖于Bazel本身,设置模拟工作区和构建文件,并将Bazel作为子进程运行,然后断言其标准输出(在本例中:Bazel info server_pid的结果)。(注意:其中一些源文件从那时起已更新,请查看最新版本。)

Per,这不是我想要的,但很接近。我希望避免重复或弄清楚如何重用定制的CROSSTOOL、bazel.rc等,但听起来这还不可能。一旦C++ SkyLaCK API更完整,这应该是容易解决的更好,但现在这是一个好的,因为它得到。谢谢