18 releases

0.4.1 Jun 13, 2023
0.4.0 Apr 19, 2022
0.3.2 Aug 1, 2021
0.3.1 Jul 30, 2021
0.2.1 Mar 30, 2020

#249 in Testing

Custom license

1.5MB
856 lines

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.

Dependencies

~6–19MB
~195K SLoC