#version #numbers #cargo-toml #file #integration-tests #sync #md

开发 version-sync

确保 README 文件和其他文件中的版本号与库版本保持同步的库

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 开发工具

Download history 2557/week @ 2024-04-20 2629/week @ 2024-04-27 2681/week @ 2024-05-04 2825/week @ 2024-05-11 2323/week @ 2024-05-18 3229/week @ 2024-05-25 4363/week @ 2024-06-01 3900/week @ 2024-06-08 3958/week @ 2024-06-15 3297/week @ 2024-06-22 3108/week @ 2024-06-29 3308/week @ 2024-07-06 3534/week @ 2024-07-13 4017/week @ 2024-07-20 5644/week @ 2024-07-27 4090/week @ 2024-08-03

每月 17,598 次下载
少于 451 个 库中使用

MIT 许可证

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.mdhtml_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)

  • #122: 在 Cargo.toml 中使用精确的依赖版本。
  • #123: 迁移到 Rust 2021 版本。
  • #126: 更新 syn 到最新版本。
  • #127: 更新 toml 到最新版本。

版本 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)

  • #108: 将所有依赖项设置为可选。感谢 @rlee287!
  • #109: 禁止使用 unsafe 代码。
  • #110: 添加简单的 check_contains_version 函数。

版本 0.9.2 (2021-02-13)

  • #94: 更新 pulldown-cmark 到 0.8。
  • #95: 修复最新 nightly 中的 non_fmt_panic lint 错误。

版本 0.9.1 (2020-07-07)

  • #91: 减少依赖项。这通过优化构建时间节省了 1-2 秒。
  • #92: 将 \r\n 规范化为 \n,以确保 ^$ 总是与行边界匹配。

版本 0.9.0 (2020-03-30)

由于我们的依赖项不断发布新的补丁版本,提高所需的最低 Rust 版本,我们已停止支持 Rust 1.31.0。在撰写本文时,代码可以与 Rust 1.36 编译,但这可能很快就会过时。

关闭的问题

  • #83: version-sync 在块引用内部解析 TOML 块时失败
  • #84: 发布到 crates.io 的 syn 1.0 更新

版本 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 就可以工作。

关闭的问题

  • #17:允许检查非 Markdown 源
  • #39:版本 0.5 需要 Rust 版本 1.21.0
  • #42:处理 Git 依赖

版本 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)

首次公开发布,支持查找 dependenciesdev-dependencies 中的过时版本号。

版本 0.1.0 到 0.1.2 以 check-versions 的名称发布。

许可证

version-sync 可以根据 MIT 许可证 分发。贡献将接受相同的许可证。

依赖项

~0–1.3MB
~27K SLoC