https://github.com/cryptape/ckb-rust-integration-test
ckb-rust-integration-test
https://github.com/cryptape/ckb-rust-integration-test
Last synced: 5 months ago
JSON representation
ckb-rust-integration-test
- Host: GitHub
- URL: https://github.com/cryptape/ckb-rust-integration-test
- Owner: cryptape
- Created: 2022-12-28T07:49:24.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-06-05T05:56:48.000Z (about 1 year ago)
- Last Synced: 2025-06-05T07:47:01.880Z (about 1 year ago)
- Language: Rust
- Size: 130 KB
- Stars: 1
- Watchers: 6
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CKB Rust Integration Test Framework
This repository contains a comprehensive testing framework for the Nervos CKB (Common Knowledge Base) blockchain's Rust SDK.
## Overview
The CKB Rust Integration Test Framework provides automated tests for CKB's RPC interfaces, ensuring that the SDK correctly interacts with CKB nodes. It supports testing both standard CKB RPC and Light Client RPC interfaces.
## Requirements
- Rust (nightly toolchain recommended)
- Cargo
- Git
## Getting Started
### Clone the Repository
```bash
git clone https://github.com/cryptape/ckb-rust-integration-test.git
cd ckb-rust-integration-test
```
### Setup Environment
```bash
sh prepare.sh
```
This script prepares all necessary dependencies and mock data for testing.
### Run Tests
```bash
cd feature
cargo +nightly test -- --nocapture
```
Use the `--nocapture` flag to display output during test execution, which is helpful for debugging.
## Framework Structure
The test framework uses `rstest` to create parameterized tests with mock RPC server responses.
### Directory Structure
- `feature/tests/` - Contains all test code
- `mockrpc/` - Tests for CKB RPC interfaces
- `mock_light_rpc/` - Tests for CKB Light Client RPC interfaces
- `common/` - Shared utilities and helper functions
## Adding New Tests
1. Create a new test file in the appropriate directory
2. Use the `rstest` macro with `mock_rpc_data` to create parameterized tests
3. Add corresponding test data JSON files in the `data` directory
Example:
```rust
use rstest::rstest;
use crate::mockrpc::{mock_rpc_data, MockRpcData};
#[rstest(mock_rpc_data("method_name", "params"))]
fn test_function(mock_rpc_data: MockRpcData) {
let client = mock_rpc_data.client();
// Test implementation
assert_eq!(expected_result, actual_result);
}
```
## Continuous Integration
This project uses GitHub Actions for continuous integration testing. Tests run automatically on pushes to the `main` branch and on pull requests.
### CI Workflow
1. Check out code
2. Set up the test environment
3. Run tests and generate a JSON format test report
4. If tests fail:
- Convert the JSON report to Markdown format
- Upload the report to Qiniu cloud storage
- Provide a download link for the test report
### Test Reports
If tests fail, a detailed report is generated and can be accessed at:
```
https://github-test-logs.ckbapp.dev/ckb-rust-integration-test/test-report.md
```
The test report includes:
- Test summary (total, passed, failed)
- Detailed information about failed tests
- Test name
- Failure reason
- Error stack trace
- Test execution time
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request or create an Issue to improve this testing framework.
Before submitting a PR, please ensure:
1. All tests pass
2. New code has appropriate test coverage
3. Code follows the project's style guidelines
## License
This project is licensed under the MIT License - see the LICENSE file for details
## Contact
If you have any questions, please submit them through GitHub Issues.