Testing & Validation
Installation
SKILL.md
Skill: Testing & Validation
When to use this skill
- BEFORE any commit (mandatory)
- After implementing a feature
- To validate a refactoring
- When in doubt about code quality
Automated script
# Full validation (format + clippy + test)
./.agent/skills/testing/scripts/validate.sh
# With auto-fix formatting
./.agent/skills/testing/scripts/validate.sh --fix
Validation workflow
Step 1: Format
cargo fmt --all
Automatically formats all code according to Rust conventions.
Step 2: Lint
cargo clippy --all-targets -- -D warnings
Rules:
- NO warnings allowed
- Fix clippy suggestions, don't ignore them with
#[allow(...)] - If an allow is really necessary, justify it in a comment
Step 3: Tests
cargo test
Rules:
- All tests must pass
- A failing test = no commit
- New tests should cover edge cases
Async Tests (MANDATORY)
When writing #[tokio::test], preventing infinite hangs is critical:
- Always use timeouts for channel operations (
recv().await).// ❌ Potential hang let msg = rx.recv().await.unwrap(); // ✅ Safe let msg = tokio::time::timeout(std::time::Duration::from_secs(1), rx.recv()) .await .expect("Timeout waiting for message")?; - Avoid infinite loops without exit conditions or timeouts.
Step 4: Release verification (optional)
cargo build --release
Do this before a release or to verify optimizations.
Quick commands
# Full validation in one line
cargo fmt && cargo clippy --all-targets -- -D warnings && cargo test
# Specific tests
cargo test test_name # A specific test
cargo test module_name:: # All tests in a module
cargo test --lib # Library tests only
cargo test --test integration # Integration tests
On failure
Clippy warning
- Read the error message carefully
- Apply clippy's suggestion
- If the suggestion is not applicable, justify with a comment
Test failure
- Identify the failing test
- Check if it's a bug in the code or in the test
- NEVER delete a test to make CI pass
- Fix the code or adapt the test if behavior changed intentionally
Checklist before commit
-
cargo fmtexecuted -
cargo clippywithout warnings -
cargo testall tests pass - Documentation updated (if needed)
- GLOBAL_APP_DESCRIPTION.md updated (if new feature)
- Version incremented in Cargo.toml
Related skills
More from zuytan/rustrade
trading best practices
Critical analysis of trading techniques and financial innovation
19rust trading development
Specific rules for trading feature development
11project specifications management
Manage and enforce project specifications for consistency
10documentation
Keep project documentation up to date
9benchmarking & performance
Trading performance evaluation via backtesting and metrics
9implementation workflow
TDD workflow for implementing features
8