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 日

#70Cargo 插件

Download history 2611/week @ 2024-04-08 3508/week @ 2024-04-15 2516/week @ 2024-04-22 2052/week @ 2024-04-29 2985/week @ 2024-05-06 1638/week @ 2024-05-13 2094/week @ 2024-05-20 2323/week @ 2024-05-27 2301/week @ 2024-06-03 2247/week @ 2024-06-10 1802/week @ 2024-06-17 2064/week @ 2024-06-24 1870/week @ 2024-07-01 2283/week @ 2024-07-08 1966/week @ 2024-07-15 1850/week @ 2024-07-22

8,143 每月下载次数
serde_string_enum 中使用

MIT/Apache 协议

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许可证定义提交的任何有意包含在作品中的贡献,将按照上述方式双许可,不附加任何额外的条款或条件。

依赖关系

~1.8–9MB
~83K SLoC