2个不稳定版本
使用旧的Rust 2015
0.2.0 | 2015年8月9日 |
---|---|
0.1.0 | 2015年8月2日 |
#5 in #downstream
1KB
Cargo Crusader
嘿,Rust库作者!Rust作为“史上最可靠的软件平台”声誉的争夺战正在这里展开,没有人能免于责任。亲爱的Rustians,Rust的未来就在你们手中。
加入Cargo Crusade,将负责任的API演化理论带给那些不信者。
Cargo Crusader是一个工具,帮助库作者在API更改发布到crates.io之前评估其对该库下游用户的影响。
如何做?
当您从您已发布的crate的源目录运行cargo-crusader
时,Crusader会请求crates.io提供所有反向依赖项 - 依赖您的已发布crate的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文件,包括每个测试的编译器输出。
测试结果有四种可能的状态:'passed',如果反向依赖项在升级前后都构建成功;'regressed',如果它在升级前构建但在升级后没有构建;'broken',如果它甚至在升级前都没有构建;'error',对于Crusader内部错误。
未来的改进
目前,Crusader会覆盖与您的本地修订版不兼容的版本号的反向依赖项。Crusader可能首先验证WIP是否符合semver有效的升级。
同时测试上游 - Crusader可以请求您依赖项的所有WIP分支,然后覆盖您的构建以查看即将到来的更改是否会破坏您的crate。
沙盒。
许可证
MIT/Apache-2.0是Rust项目和Cargo Crusade的官方许可证。