Skip to content
Eugene Tartakovsky edited this page May 17, 2026 · 1 revision

Thanks

fixture3 stands on prior work. This page names what we drew from and what we depend on.

The DDMin reducer

The fixture3 reduce command implements DDMin (Delta Debugging Minimization), originally described in:

  • Andreas Zeller and Ralf Hildebrandt, Simplifying and Isolating Failure-Inducing Input, IEEE Transactions on Software Engineering, 28(2):183-200, 2002. Paper.
  • Andreas Zeller, Why Programs Fail: A Guide to Systematic Debugging (Morgan Kaufmann).

Zeller's original work introduced DDMin as a generic algorithm for shrinking failure-inducing inputs to a minimal example. fixture3 applies it to approval-testing fixture trees: strip files and directory subtrees from a copied fixture tree while keeping the suite's approved output stable.

The approval-testing tradition

fixture3's core model - stable inputs, versioned approved outputs, fail-on-diff - is the same model used by:

  • ApprovalTests — Llewellyn Falco's framework (with ports across .NET, Java, Python, JavaScript, and others). The original popularization of the approval-testing pattern. fixture3 adopts the same pattern with a different shape: manifest-driven configuration in YAML, external command runners that produce JSON, fixtures as separate first-class inputs.

Snapshot testing in Rust (adjacent)

  • insta — the dominant Rust snapshot library. Different model: snapshots live in or beside the test function, coupled to cargo test. fixture3 separates fixture inputs from approved outputs and runs as an external CLI over any command that emits JSON. Both have a place; see the Comparison page for when to reach for which.
  • expect-test — simpler inline snapshots. Useful for small, locally-scoped expectations.

License

fixture3 is MIT-licensed. Every project listed above retains its own license; check the linked repositories for details.

Clone this wiki locally