29个版本 (10个破坏性)
0.12.0 | 2024年8月14日 |
---|---|
0.9.0 | 2024年5月23日 |
0.6.0 | 2024年3月26日 |
0.3.0 | 2023年12月6日 |
0.1.0 | 2022年2月1日 |
#337 in 魔法豆
每月416次下载
1.5MB
8K SLoC
chia_rs
一组用于处理Chia区块链的Rust crate。同时,还提供了Python绑定,形式为wheel。
先决条件
单元测试
要运行整个工作区的单元测试
cargo test --workspace
一些慢速测试仅在优化构建中启用,因此也可以在发布模式下运行测试
cargo test --workspace --release
Python链接
由于wheel中包含的pyo3
依赖项,可能需要激活Python虚拟环境才能正确链接测试
可以使用以下命令设置虚拟环境
python3 -m venv venv
激活虚拟环境
. ./venv/bin/activate
Python测试
wheel
crate是一个单独的Python wheel,导出对仓库中各种功能的绑定,主要是从chia-consensus
和chia-protocol
。
它使用maturin
构建,因此需要激活Python虚拟环境才能使构建工作。
绑定使用pytest
进行测试。在运行它们之前,请安装以下依赖项
pip install pytest maturin typing-extensions chia-blockchain==2.1.2
然后构建Python wheel
maturin develop -m wheel/Cargo.toml
最后,您可以通过运行Python绑定测试来运行
pytest tests
请注意,这些测试可能需要几分钟才能完成。
基准测试
在修改之前运行特定crate的基准测试
cargo bench -- --save-baseline before
应用更改后,完成基准测试
cargo bench -- --save-baseline after
critcmp after before
您也可以通过包含--workspace
来运行所有基准测试。
请注意,您必须在 --
之前包含标志,例如
cargo bench --workspace -- --save-baseline before
预提交钩子
此存储库有一个预提交配置,通过运行以下命令将其连接到git:
pre-commit install --hook-type pre-commit --hook-type pre-push
它首先运行Prettier,然后在每次提交时对所有crate运行 cargo fmt
。当你推送时,它运行 cargo clippy
,cargo test
,以及cargo build
。
要显式运行所有检查(不推送),请运行
pre-commit run --all --hook-stage pre-push
模糊测试
无法为整个工作空间运行或列出模糊测试,但只能为单个crate运行。有一个工具可以从区块链数据库生成模糊测试语料库。
运行方式如下
cd crates/chia-tools
cargo run --release --bin gen-corpus -- --help
以下crate有模糊测试
- chia-bls
- chia-consensus
- chia-protocol
- chia-puzzles
- clvm-utils
列出并运行模糊测试
cargo fuzz list
cargo fuzz run <name-of-fuzzer>
增加版本号
请确保已安装 cargo-workspaces
cargo install cargo-workspaces
要增加所有相关crate的版本
cargo ws version --all --no-git-commit
如果没有不兼容的API更改,则选择“小版本更新”,否则选择“大版本更新”。
依赖项
~10–21MB
~381K SLoC