15 个版本 (8 个破坏性版本)
0.10.0 | 2024 年 7 月 11 日 |
---|---|
0.8.0 | 2024 年 5 月 16 日 |
0.5.2 | 2024 年 2 月 21 日 |
0.2.13 | 2023 年 11 月 21 日 |
0.2.9 | 2023 年 7 月 25 日 |
#1674 in 神奇豆子
每月 332 次下载
1.5MB
9K SLoC
chik_rs
一个用于处理 Chik 区块链的 Rust crate 的集合。还包括 Python 的 wheel 形式的绑定。
先决条件
单元测试
运行整个工作区的单元测试
cargo test --workspace
一些慢速测试仅在优化构建中启用,因此也可以在发布模式下运行测试
cargo test --workspace --release
Python 链接
由于 pyo3
依赖项,测试可能需要激活 Python 虚拟环境才能正确链接。
可以使用以下命令设置虚拟环境
python3 -m venv venv
激活虚拟环境
. ./venv/bin/activate
Python 测试
wheel
crate 是一个单一的 Python wheel,导出对存储库中各种功能的绑定,主要是从 chik-consensus
和 chik-protocol
。
它是使用 maturin
构建的,因此需要激活 Python 虚拟环境才能使构建正常工作。
绑定使用 pytest
进行测试。在运行它们之前,安装以下依赖项
pip install pytest maturin typing-extensions chik-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
提交前钩子
该存储库有一个提交前配置,通过运行
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/chik-tools
cargo run --release --bin gen-corpus -- --help
以下 crate 具有模糊测试
- chik-bls
- chik-consensus
- chik-protocol
- chik-puzzles
- klvm-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
~399K SLoC