bazel - 后处理 bazel 测试命令生成的报告
问题描述
我在我的 CI 服务器上使用 Bazel 来构建和测试我的 C++ 库,但我无法检索生成的报告/日志文件。
我想知道是否有一种方法可以引用这些生成的文件以供在 a 中进一步使用,genrule
这可以允许我对文件进行后处理(生成 HTML ...)?
巴泽尔执行:
$ bazel test //unit:tests
INFO: Analyzed 2 targets (21 packages loaded, 400 targets configured).
INFO: Found 2 test targets...
INFO: Elapsed time: 29,326s, Critical Path: 6,86s
INFO: 22 processes: 22 darwin-sandbox.
INFO: Build completed successfully, 29 total actions
//unit:tests_a PASSED in 0.7s
//unit:tests_b PASSED in 0.7s
Executed 2 out of 2 tests: 2 tests pass.
INFO: Build completed successfully, 29 total actions
生成的报告:
$ find bazel-out/ -name '*.xml' -or -name '*.log'
bazel-out//darwin-fastbuild/testlogs/unit/tests_a/test.log
bazel-out//darwin-fastbuild/testlogs/unit/tests_a/test.xml
bazel-out//darwin-fastbuild/testlogs/unit/tests_b/test.log
bazel-out//darwin-fastbuild/testlogs/unit/tests_b/test.xml
工作空间:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "gtest",
url = "https://github.com/google/googletest/archive/release-1.10.0.zip",
sha256 = "94c634d499558a76fa649edb13721dce6e98fb1e7018dfaeba3cd7a083945e91",
strip_prefix = "googletest-release-1.10.0",
)
单位/建造:
load("@rules_cc//cc:defs.bzl", "cc_test")
test_suite(name = "tests", tests = glob(["tests_*"]))
cc_test(name = "tests_a", srcs = ["ut.cc"], deps = ["@gtest//:gtest_main"])
cc_test(name = "tests_b", srcs = ["ut.cc"], deps = ["@gtest//:gtest_main"])
单位/ut.cc:
#include "gtest/gtest.h"
TEST(HelloTest, GetGreet) {
EXPECT_EQ(1, 1);
}
解决方案
我认为您可以通过环境变量指示的 PATH 通过 bazel 测试保存报告生成:TEST_UNDECLARED_OUTPUTS_DIR。bazel 测试会将您的报告保存在 bazel-out/k8-fastbuild/testlogs////<test_binary_targrt>/test.outputs/outputs 中。 zip 看看这个:https ://docs.bazel.build/versions/master/test-encyclopedia.html#initial-conditions
推荐阅读
- r - 来自在线网页链接的 R read_excel 生成一个空数据框
- vba - 使用 Outlook 互操作将邮件发送给多个收件人
- spring - java - 如何在java spring中使用jackson将集合转换为csv?
- vue.js - 在 Vue 中加载静态 HTML 文件
- r - 使用 corclust 的层次聚类
- php - 如何从 www-data 运行 SSH 命令
- c# - 防止从第三个外部类实例化在其外部类中使用的内部类
- python - 如何在 python3 json 列表字典响应中获取/过滤值?
- c++ - eigen 的 C++ 包装类(线性代数库)
- office365 - 如何为启用邮件的安全组创建 ManagementScope?