About rust-testing
A skill that codifies Rust testing conventions used by codex-rs contributors. It guides module, integration, event, and snapshot tests, with patterns for mocks, deterministic behavior, and test infrastructure.
Key features
- 01Organize test files and assertions
- 02Mock API and SSE interactions
- 03Build typed and reusable test data
- 04Test events with predicate matching
- 05Keep tests deterministic
- 06Cover TUI rendering with snapshots
Use cases
- 01Writing Rust module tests
- 02Adding regression tests for bug fixes
- 03Testing Responses API flows with SSE mocks
- 04Snapshot-testing TUI changes
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill rust-testingAfter installing, type/rust-testingin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
AGENTS.mdmetadata.jsonassets/templates/_template.mdreferences/_sections.mdarch-avoid-env-mutation.mdarch-cargo-bin-resolver.mdarch-regression-per-pr.mdarch-sibling-test-files.mdarch-tempdir-isolation.mdarch-test-module-imports.mdassert-descriptive-names.mdassert-eq-over-bool.mdassert-pretty-assertions.mdassert-snapshot-ui.mdassert-whole-object.mddata-btreemap-tests.mddata-builder-pattern.mddata-minimal-fixtures.mddata-realistic-names.mddata-struct-construction.mddet-deterministic-ids.mddet-fixed-ordering.mddet-no-env-dependency.mddet-no-timing-assertions.mddet-sandbox-env-skip.mdevent-function-call-output.mdevent-request-helpers.mdevent-structured-assertions.mdevent-submit-op.mdevent-wait-for-event.mdDetails
From the project READMECodex-RS Contributors Rust Testing Best Practices
A comprehensive guide to writing high-quality Rust tests at the standard established by the top codex-rs contributors. This skill encodes patterns for test architecture, assertions, mock servers, test data, event-driven testing, determinism, snapshot testing, and integration test infrastructure.
When to Apply
- Writing new tests for any Rust module in codex-rs
- Adding regression tests for a bug fix (3-6 tests per PR)
- Creating integration tests that interact with the Responses API via SSE mocks
- Modifying TUI rendering code that requires snapshot coverage
- Reviewing test code for adherence to codebase conventions
Rule Categories by Priority
| Priority | Category | Prefix | Rules | Focus |
|---|---|---|---|---|
| CRITICAL | Test Architecture | arch- | 6 | File organization, imports, isolation |
| CRITICAL | Assertions | assert- | 5 | pretty_assertions, whole-object comparison |
| HIGH | Mock Servers | mock- | 6 | wiremock, SSE builders, ResponseMock |
| HIGH | Test Data | data- | 5 | Builders, typed construction, BTreeMap |
| MEDIUM-HIGH | Event Testing | event- | 5 | submit/wait cycles, predicate matching |
| MEDIUM | Determinism | det- | 5 | Stable IDs, environment isolation |
| MEDIUM | Snapshot Testing | snap- | 4 | Insta workflow, buffer rendering |
| LOW-MEDIUM | Integration Tests | integ- | 4 | core_test_support, Bazel compatibility |
Quick Reference
- Test file placement: Sibling
_tests.rsvia#[path = "feature_tests.rs"] - Assertions: Always
use pretty_assertions::assert_eq; - Object comparison:
assert_eq!(actual, expected)on entire structs - SSE mocking:
responses::mount_sse_once+responses::sse(vec![ev_*(...)]) - Event waiting:
wait_for_event(codex, |ev| predicate) - Snapshot tests:
insta::assert_snapshot!(terminal.backend()) - Determinism:
BTreeMapoverHashMap,set_deterministic_process_ids - Binary resolution:
codex_utils_cargo_bin::cargo_bin("name") - Fixture paths:
codex_utils_cargo_bin::find_resource!("path") - Sandbox handling:
skip_if_sandbox!()/skip_if_no_network!()
How to Use
- Start with CRITICAL rules (arch, assert) — these apply to every test
- Apply HIGH rules (mock, data) when writing integration tests with API mocks
- Apply MEDIUM-HIGH rules (event) when testing the agent protocol
- Apply MEDIUM rules (det, snap) when tests involve process IDs or UI rendering
- Apply LOW-MEDIUM rules (integ) for cross-crate and build-system compatibility
Reference Files
| File | Purpose |
|---|---|
references/_sections.md | Section definitions, ordering, and impact levels |
references/arch-*.md | Test architecture rules (6 files) |
references/assert-*.md | Assertion rules (5 files) |
references/mock-*.md | Mock server rules (6 files) |
references/data-*.md | Test data rules (5 files) |
references/event-*.md | Event testing rules (5 files) |
references/det-*.md | Determinism rules (5 files) |
references/snap-*.md | Snapshot testing rules (4 files) |
references/integ-*.md | Integration test rules (4 files) |
assets/templates/_template.md | Rule file template |
metadata.json | Skill metadata and version |
Comments
Markdown supported