#impact #publishing #downstream #cargo #io #evaluate #crusaders

app cargo-crusader

在发布前测试 crate 变更对下游用户的影响

2 个版本

使用旧的 Rust 2015

0.1.1 2018年4月22日
0.1.0 2015年8月2日

#392Cargo 插件

MIT/Apache

31KB
709

Cargo Crusader

嘿,Rust crate 作者!Rust 作为“史上最可靠的软件平台”的声誉之战正在激烈进行,没有人可以免除责任。亲爱的 Rust 朋友,Rust 的未来掌握在你的手中。

加入 Cargo Crusade 并将 负责任的 API 进化理论 带给不信者。

Cargo Crusader 是一个工具,帮助 crate 作者在发布到 crates.io 之前评估未来 API 变更对 crate 下游用户的影响。

如何使用?

当您从您已发布的 crate 的源目录运行 cargo-crusader 时,Crusader 会向 crates.io 请求所有其反向依赖项 - 依赖您的已发布 crate。然后它会下载并构建每个依赖项:首先针对当前发布的 crate,然后针对您的本地工作成果(即您即将发布的下一个版本)。然后它会报告行为差异。

入门指南

重要安全警告:此程序执行从互联网下载的任意不受信任的代码。强烈建议您在运行它之前采取自己的沙盒隔离预防措施。

首先,下载并构建 Cargo Crusader,并将 cargo-crusader 命令放入您的 PATH 环境变量中

$ git clone https://github.com/brson/cargo-crusader
$ cd cargo-crusader
$ cargo build --release
$ export PATH=$PATH:`pwd`/target/release/

现在切换到您的源目录并运行 cargo-crusader

$ cargo-crusader
crusader: downloading reverse deps for hyper
crusader: 10 reverse deps
crusader: testing crate aloft
crusader: testing crate austenite
crusader: result 1 of 10, aloft 0.3.1: broken
crusader: testing crate bare
crusader: result 2 of 10, austenite 0.0.1: broken
crusader: testing crate catapult
crusader: result 3 of 10, bare 0.0.1: broken
crusader: testing crate chan
crusader: result 4 of 10, catapult 0.1.2: broken
crusader: testing crate chatbot
crusader: result 5 of 10, chan 0.1.14: passed
crusader: testing crate click_and_load
crusader: result 6 of 10, chatbot 0.2.2: regressed
crusader: testing crate coinbaser
crusader: result 7 of 10, click_and_load 0.0.1: broken
crusader: testing crate doapi
crusader: result 8 of 10, coinbaser 0.1.0: regressed
crusader: testing crate ease
crusader: result 9 of 10, doapi 0.1.0: broken
crusader: result 10 of 10, ease 0.2.1: regressed

passed: 1
regressed: 3
broken: 6
error: 0

full report: ./crusader-report.html

完整运行需要相当长的时间。完成后,它会打印摘要,并生成一个包含完整结果的 HTML 文件,包括每个测试的编译器输出。

测试结果有四种可能的状态:“通过”,如果反向依赖项在升级前后都构建成功;“回归”,如果它在升级前构建成功但在升级后失败;“损坏”,如果它甚至无法在升级前构建;以及“错误”,对于 Crusader 的内部错误。

未来改进

目前,Crusader将覆盖依赖项的逆依赖项,使用您的本地修订版本 即使它们请求的版本与您的正在进行的开发不兼容semver。Crusader可能会首先验证WIP是否符合semver有效的升级。

同时测试上游 - Crusader可能会请求您的依赖项的所有WIP分支,然后覆盖您的构建以查看即将到来的更改是否会破坏您的crate。

沙盒。

许可证

MIT/Apache-2.0是Rust项目和Cargo Crusade的官方许可证。

依赖项

~12–20MB
~306K SLoC