runt

A lighweight and parallel snapshot testing framework in rust

MIT License

Downloads
12.5K
Stars
21
Committers
2

RUN Tests (RUNT)   latest latest-docs

Runt is a lightweight, concurrent, and parallel snapshot testing framework that requires minimal configuration. Checkout the documentation for explanation of various features.

Here is an example of runt in action:

Install the latest version of runt using:

cargo install runt

Runt is most useful when you have the following test setup:

  • One command that needs to run on many input files.
  • Test suites grouped by commands run on the files.
  • Test outputs are sent to IO streams (stdout and stderr).
  • Test and test suites are unordered.

Runt is not useful when you want to do:

  • Rich introspective testing of data structures.
  • Test suites with complex setups, dependencies, and teardowns.

Snapshot testing with runt is extremely flexible. For example, the tests under runt-cli-test test the outputs of the runt CLI.

Building & Developing

  • Install Rust.
  • Run cargo build --release. The runt executable is generated
    under target/release/runt.
  • Runt is tested using runt. Run runt cli-test to test runt.

Example

View the example configuration for the tests in cli-test. To run the tests, run runt cli-test

Alternatives

  • Turnt is a testing framework that allows for more
    complex snapshot comparisons. It's particularly powerful when you have
    several intermediate files you'd like to compare. runt forgoes the
    flexibility of turnt for faster execution and built-in output diffing.
  • insta enables snapshot testing of inline rust programs. Useful when
    the testing intrinsic structure of Rust programs. runt operators on
    arbitrary shell commands which enables testing CLI programs.
  • jest is a JavaScript snapshot testing framework that allow
    formulation of complex expectation queries.

Runt is used to test several reserach compilers built by the Capra lab: Calyx, Dahlia, and Filament.