Testing & Validation
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