12 个稳定版本
1.10.0 | 2023 年 7 月 31 日 |
---|---|
1.9.0 | 2023 年 3 月 24 日 |
1.8.0 | 2023 年 1 月 18 日 |
1.7.0 | 2022 年 4 月 7 日 |
1.2.0 | 2020 年 5 月 25 日 |
#70 在 Cargo 插件 中
8,143 每月下载次数
在 serde_string_enum 中使用
28KB
608 行代码(不包括注释)
cargo-all-features
为 crate 构建和测试所有功能标志组合的 Cargo 子命令。
安装
cargo install cargo-all-features
用法
以下命令可以在 Cargo 包内部或 Cargo 工作区根目录下运行。
使用所有功能标志组合构建 crate
cargo build-all-features <CARGO BUILD FLAGS>
使用所有功能标志组合检查 crate
cargo check-all-features <CARGO CHECK FLAGS>
使用所有功能标志组合测试 crate
cargo test-all-features <CARGO TEST FLAGS>
为什么?
如果您有一个使用 Rust 功能标志的 crate,通常需要在您的持续集成工具中设置一个测试矩阵以 单独 测试所有功能标志。这种设置难以维护,并且很容易忘记更新,因为功能标志可能会增加或减少。此外,它并不全面,因为启用功能标志的 组合 可能会导致编译错误,这应该被修复。这个实用程序就是为了解决这些问题而构建的。
选项
您可以将以下选项添加到 Cargo.toml 文件中,以在 [package.metadata.cargo-all-features]
下配置 cargo-all-features 的行为。
[package.metadata.cargo-all-features]
# Features "foo" and "bar" are incompatible, so skip permutations including them
skip_feature_sets = [
["foo", "bar"],
]
# If your crate has a large number of optional dependencies, skip them for speed
skip_optional_dependencies = true
# Add back certain optional dependencies that you want to include in the permutations
extra_features = [
"log",
]
# Exclude certain features from the build matrix
denylist = ["foo", "bar"]
# Always include these features in combinations.
# These features should not be included in `skip_feature_sets` or `denylist`, they get
# added in later
always_include_features = ["baz"]
# The maximum number of features to try at once. Does not count features from `always_include_features`.
# This is useful for reducing the number of combinations run for a crate with a large amount of features,
# since in most cases a bug just needs a small set of 2-3 features to reproduce.
max_combination_size = 4
# Only include certain features in the build matrix
#(incompatible with `denylist`, `skip_optional_dependencies`, and `extra_features`)
allowlist = ["foo", "bar"]
项目还支持分块处理:使用 --n-chunks 3 --chunks 1
将要测试的 crate 分成三个集合(目前按字母顺序排列),并仅对第一个集合的 crate 运行请求的命令。这对于拆分 CI 作业或进行磁盘清理很有用,因为对于大型工作区,运行 check-all-features
和其他命令可能需要很长时间,并产生大量工件。
许可证
许可协议为以下之一
- Apache许可证,版本2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则您根据Apache-2.0许可证定义提交的任何有意包含在作品中的贡献,将按照上述方式双许可,不附加任何额外的条款或条件。
依赖关系
~1.8–9MB
~83K SLoC