rust-test-tools
Installation
SKILL.md
Rust Test Tools
A green cargo test does not find undefined behavior (UB), atomic-ordering bugs, parser edge
cases, weak assertions, or output drift. Pick the tool by the risk that the change adds. Run it
on the crate that the change touches while you iterate. Run the full lane once before merge.
Pick the tool
| The change adds | Run | A green run does not prove |
|---|---|---|
Pure-Rust unsafe: raw pointers, transmute, MaybeUninit, from_raw_parts |
Miri. The rust-sanitizers-miri skill owns the flags and the aliasing-model policy |
UB freedom on paths that the tests do not reach |
unsafe next to foreign code: FFI, JNI, libc, syscalls |
ASan on the host, or HWASan or MTE on a device; TSan when the code shares state across threads. Also Miri on the pure-Rust helpers, with the foreign calls stubbed under #[cfg(miri)] |
UB freedom: a sanitizer does not know the Rust aliasing rules |
| Hand-rolled atomics, a spinlock, a lock-free structure, a publish flag | loom | freedom from bugs that need load buffering or more preemptions than the bound |
| A parser, a decoder, or any function that reads untrusted bytes | proptest, then cargo-fuzz | freedom from bugs that the strategy or the corpus never reaches |
| A port whose reference a test can call in-process | a differential fuzz target | equivalence outside the inputs that the fuzzer reached |
| A refactor of tested logic, or new tests for a critical change | cargo-mutants on the diff, or on the source files under test when the diff only adds tests | that the asserted values are the correct ones |
| Output that must be deterministic: serialized records, generated code, reports, images | golden files | that the first blessed baseline is correct |
| None of the above | the normal test run | behavior that no test asserts |