#datatest #data-driven-tests #test-harness

datatest-stable

Data-driven tests that work on stable Rust

1 unstable release

0.1.1 Apr 17, 2021
0.1.0 Apr 17, 2021

#118 in Testing

Download history 1339/week @ 2021-07-02 1528/week @ 2021-07-09 2030/week @ 2021-07-16 2450/week @ 2021-07-23 1961/week @ 2021-07-30 2247/week @ 2021-08-06 1082/week @ 2021-08-13 1229/week @ 2021-08-20 1060/week @ 2021-08-27 1569/week @ 2021-09-03 2094/week @ 2021-09-10 2322/week @ 2021-09-17 2047/week @ 2021-09-24 2158/week @ 2021-10-01 2956/week @ 2021-10-08 2738/week @ 2021-10-15

1,960 downloads per month

MIT/Apache

21KB
353 lines

datatest-stable

datatest-stable on crates.io Documentation (latest release) Documentation (main) License License

datatest-stable is a very simple test harness intended to write data-driven tests, where individual test cases are specified as data and not as code. Given:

  • a test my_test that accepts a path as input
  • a directory to look for files in
  • a pattern to match files on

datatest_stable will call the my_test function once per matching file in the directory.

This meets some of the needs provided by the datatest crate when using a stable rust compiler without using the RUSTC_BOOTSTRAP hack to use nightly features on the stable compiler.

In order to setup data-driven tests for a particular test target you must do the following:

  1. Configure the test target by setting the following in the Cargo.toml
[[test]]
name = "<test target name>"
harness = false
  1. Call the datatest_stable::harness!(testfn, root, pattern) macro with the following parameters:
  • testfn - The test function to be executed on each matching input. This function must have the type fn(&Path) -> datatest_stable::Result<()>
  • root - The path to the root directory where the input files (fixtures) live. This path is relative to the root of the crate.
  • pattern - the regex used to match against and select each file to be tested.

The three parameters can be repeated if you have multiple sets of data-driven tests to be run: datatest_stable::harness!(testfn1, root1, pattern1, testfn2, root2, pattern2)

Examples

This is an example test. Use it with harness = false.

use std::path::Path;

fn my_test(path: &Path) -> datatest_stable::Result<()> {
    // ... write test here

    Ok(())
}

datatest_stable::harness!(my_test, "path/to/fixtures", r"^.*/*");

See also

Contributing

See the CONTRIBUTING file for how to help out.

License

This project is available under the terms of either the Apache 2.0 license or the MIT license.

Dependencies

~2.7–4MB
~82K SLoC