#cargo-test #junit #xml-format #testing #xml-parser

app junitify

将 cargo 测试 JSON 转换为 JUnit XML

17 个版本

0.1.18 2024年7月9日
0.1.17 2022年9月22日
0.1.15 2022年4月3日
0.1.14 2022年1月16日
0.1.8 2021年9月25日

#191开发工具

Download history 198/week @ 2024-05-01 219/week @ 2024-05-08 135/week @ 2024-05-15 268/week @ 2024-05-22 213/week @ 2024-05-29 319/week @ 2024-06-05 339/week @ 2024-06-12 231/week @ 2024-06-19 123/week @ 2024-06-26 132/week @ 2024-07-03 231/week @ 2024-07-10 152/week @ 2024-07-17 207/week @ 2024-07-24 249/week @ 2024-07-31 145/week @ 2024-08-07 99/week @ 2024-08-14

731 每月下载量

MIT 许可证

59KB
1.5K SLoC

junitify

junitify on crates.io pipeline

junitify 从标准输入读取 JSON 测试,并将 JUnit XML 结果写入标准输出,或写入通过 --out 指定的目录。

这可以用于与使用 JUnit XML 格式显示测试结果的 CI/CD 平台集成,例如 Gitlab。

安装

cargo install junitify

示例

cargo test -- --format=json -Z unstable-options --report-time | junitify --out tests/

Valgrind (自 0.1.13 版起)

0.1.13 版起,可以将 Valgrind XML 报告转换为 JUnit 报告,例如

fish.shell

valgrind --tool=memcheck --xml=yes --xml-file=report.xml (cargo +nightly test -q --message-format=json --no-run | jq -r '.executable | select(. != null)')
junitify -k valgrind --out tests/ -f report.xml

非零退出码(自 0.1.14 版起)

0.1.14 版起,现在可以使用 -z 使 junitify 在测试失败时以非零代码退出,也可以使用 -r 将所有测试报告到标准输出。

JUnit XML(自 0.1.14 版起)

0.1.14 版起,junitify 能够读取自身生成的 JUnit XML,配合 -z-r,当有失败的测试时,它将打印测试结果并以非零代码退出。

JUnit XML 解析器与其他解析器的工作方式相同,它读取 JUnit XML 并输出 JUnit XML,它可能会更改其内容、结构和结构,并删除大量值(在 XML 不是由 junitify 生成的 XML 的情况下)。

新的 XML 生成器(自 0.1.14 版起)

我们不再使用Handlebars,现在使用 quick-xml 生成XML,这有助于在不应用奇怪的缩进的情况下保留测试的原始输出,同时它提供了一个更易于维护的基于serde的代码。

我们将在未来移除handlebars依赖(从 0.1.15 版本开始移除)。

忽略解析错误(自 0.1.15

有时,测试会打印消息到Stdout和Stderr,并且它们会被管道传输到Cargo输出,与测试套件输出混合,这会导致在解析输出时 junitify 失败。为了克服这个问题,你可以使用 -i--ignore-parse-errors 来忽略解析错误。

请注意,如果Cargo输出的JSON格式发生变化(由于 --format=json 是不稳定的),junitify 将会忽略它们而不是崩溃,因此只有在你测试的输出与 cargo test 输出混淆时才使用它。

带有 - 的示例

cargo test -- --format=json -Z unstable-options --report-time | junitify -i --out tests/

在此处阅读完整的变更日志 Junitify 0.1.15 Changelog

CI/CD Docker镜像(已弃用)

Docker镜像已弃用,Rust现在提供了一个nightly镜像,因此junitify不再构建自己的镜像(这已经被我忽视,并且很长时间以来都没有用)。

CI/CD 示例

过时

你可以在 bindet .gitlab-ci.yml 中找到CI/CD的示例,并查看它们在 管道报告中 的样子。

现在应该如何操作

你可以查看 tomq CI/CD 示例,以获取更最新的示例。你可能还想要指定一个特定的版本

cargo +nightly install [email protected]

如果你不希望每次都构建junitify,请查看 GitLab上的junitify包,在那里你可以找到junitify的最新二进制版本(目前只适用于Linux x86,arm64即将推出,因为GitLab添加了arm64机器)。

只需确保在CI/CD管道中验证校验和,以确保安全。

依赖项

~9–20MB
~237K SLoC