16 个版本 (8 个重大更新)
0.9.5 | 2023 年 9 月 9 日 |
---|---|
0.9.4 | 2021 年 12 月 14 日 |
0.9.3 | 2021 年 9 月 20 日 |
0.9.2 | 2021 年 2 月 13 日 |
0.5.0 | 2017 年 11 月 19 日 |
#69 in 开发工具
每月 17,598 次下载
在 少于 451 个 库中使用
70KB
1K SLoC
保持版本号与 Cargo.toml 保持同步
Rust 项目的典型做法是在多个位置引用库版本号,例如 README.md
文件。版本同步库使得添加一个集成测试来检查当库版本更改时 README.md
是否被更新变得容易。
用法
将其添加到您的 Cargo.toml
[dev-dependencies]
version-sync = "0.9"
然后创建一个 tests/version-numbers.rs
文件,内容如下
#[test]
fn test_readme_deps() {
version_sync::assert_markdown_deps_updated!("README.md");
}
#[test]
fn test_html_root_url() {
version_sync::assert_html_root_url_updated!("src/lib.rs");
}
此集成测试将确保您的 README.md
文件中提到的依赖项与库版本保持同步,并且您的 html_root_url
指向 docs.rs 上的正确文档。如果一切正常,测试通过
$ cargo test
Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs
Running target/debug/deps/version_numbers-504f17c82f1defea
running 2 tests
test test_readme_deps ... ok
test test_html_root_url ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured
如果 README 或 html_root_url
与库版本不同步,则测试失败。在此示例中,库名为 your-crate
,而 Cargo.toml
中的版本号已更改为 0.2.0,而 README.md
和 html_root_url
仍使用 0.1.2。现在测试失败,并显示有问题的 TOML 代码和属性
$ cargo test
Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs
Running target/debug/deps/version_numbers-f399bac3e468d035
running 2 tests
test test_readme_deps ... FAILED
test test_html_root_url ... FAILED
failures:
---- test_readme_deps stdout ----
Checking code blocks in README.md...
README.md (line 20) ... expected minor version 2, found 1 in
[dev-dependencies]
your-crate = "0.1"
thread 'test_readme_deps' panicked at 'dependency errors in README.md', tests/version-numbers.rs:6
note: Run with `RUST_BACKTRACE=1` for a backtrace.
---- test_html_root_url stdout ----
Checking doc attributes in src/lib.rs...
src/lib.rs ... expected minor version 2, found 1 in
#![doc(html_root_url = "https://docs.rs/your-crate/0.1.2")]
thread 'test_html_root_url' panicked at 'html_root_url errors in src/lib.rs', tests/version-numbers.rs:11
failures:
test_html_root_url
test_readme_deps
test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured
error: test failed
排除 TOML 代码
您可以在代码块的语言行中添加 no_sync
来排除它由 assert_markdown_deps_updated!
执行的检查
```toml,no_sync
[dependencies]
your_crate = "0.1.2"
```
发布历史
这是一份日志,描述了每个版本的最重要的更改。
版本 0.9.5 (2023-09-09)
版本 0.9.4 (2021-12-14)
- #115: 将
assert_markdown_deps_updated!
扩展为也检查版本号,如=1.2.3
,>1.2.3
和>=1.2.3
。 - #119: 添加新的
assert_only_contains_regex!
宏,确保文件中所有版本号都已更新。
版本 0.9.3 (2021-09-20)
版本 0.9.2 (2021-02-13)
版本 0.9.1 (2020-07-07)
版本 0.9.0 (2020-03-30)
由于我们的依赖项不断发布新的补丁版本,提高所需的最低 Rust 版本,我们已停止支持 Rust 1.31.0。在撰写本文时,代码可以与 Rust 1.36 编译,但这可能很快就会过时。
关闭的问题
版本 0.8.1 (2019-04-03)
放宽了依赖项,以便更容易升级 version-sync。
版本 0.8.0 (2019-03-28)
我们现在使用 Rust 2018,这意味着我们要求 Rust 版本 1.31.0 或更高。宏 assert_html_root_url_updated!
将再次根据 syn crate 的范围信息报告准确的行号。
版本 0.7.0 (2019-01-14)
现在在 assert_contains_regex!
的 {name}
和 {version}
占位符中正确转义特殊字符。
更新了依赖项,version-sync 现在需要 Rust 版本 1.27.2 或更高。
版本 0.6.0 (2018-11-22)
您可以使用 assert_contains_regex!
来搜索文件中的当前版本号。搜索是通过正则表达式完成的,其中 {version}
被替换为当前的版本号。
Git 依赖现在总是被接受,这意味着以下这样的代码块
```toml
[dependencies]
your_crate = { git = "..." }
```
将无需您添加 no_sync
就可以工作。
关闭的问题
版本 0.5.0(2017-11-19)
依赖项已更新,version-sync 现在需要 Rust 版本 1.21 或更高。
assert_html_root_url_updated!
的错误信息现在再次包含行号(基于启发式方法,直到 syn crate 可以提供信息)。
版本 0.4.0(2017-11-01)
此版本替换了对已弃用的 syntex_syntax 的依赖,改为依赖更轻的 syn crate。这提高了编译速度。遗憾的是,syn crate 不提供行号信息,因此错误信息不再那么完善。我们可能在以后的版本中解决这个问题。
版本 0.3.1(2017-09-26)
此版本修复了处理预发布标识符的小问题。
关闭的问题
- #19:预发布标识符被忽略。
版本 0.3.0(2017-09-23)
在检查 README 中的依赖项时,现在可以通过在语言行中添加 no_sync
来排除 TOML 块的检查。
```toml,no_sync
[dependencies]
your_crate = "0.1"
```
此 TOML 块将不会被检查。这类似于 Rust 代码块中的 no_run
。
版本 0.2.0(2017-09-20)
添加了 assert_html_root_url_updated!
,这将检查 html_root_url
属性是否指向 docs.rs 上正确的 crate 文档版本。
版本 0.1.3(2017-09-18)
首次公开发布,支持查找 dependencies
和 dev-dependencies
中的过时版本号。
版本 0.1.0 到 0.1.2 以 check-versions 的名称发布。
许可证
version-sync 可以根据 MIT 许可证 分发。贡献将接受相同的许可证。
依赖项
~0–1.3MB
~27K SLoC