NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4974 most downloaded on crates.io
Data-driven tests that work on stable Rust
Last release 1 years ago
29 Sep 2025
Release timing varies
gaps range from 2 weeks to 1.1 years
Nearly every release is documented
notes for 18 of 18 stable releases
1 version withdrawn
withdrawn after publishing
5 years old
19 releases · first in 2021
One column per quarter.
Replaced obsolete doc_auto_cfg with doc_cfg , to fix Rust nightly builds with the doc_cfg flag enabled.
Replaced obsolete doc_auto_cfg with doc_cfg, to fix Rust nightly builds with the doc_cfg flag enabled.
pattern is now optional in the harness! macro. If not specified, the default pattern is r".*" (match all files).
pattern is now optional in the harness! macro. If not specified, the default pattern isr".*" (match all files).root argument.Fixed documentation for include_dir invocations. They must typically be called via include_dir!("$CARGO_MANIFEST_DIR/path/to/data") .
Fixed documentation for include_dir invocations. They must typically be called
via include_dir!("$CARGO_MANIFEST_DIR/path/to/data").
This is both a nicer format for expressing multiple tests, and a signal to indicate the other breaking changes in this release.
include-dirThe macro call format has changed to:
datatest_stable::harness! {
{ test = fn_name, path = &include_dir!("path/to/data"), pattern = r"^.*$" },
// ...
}This is both a nicer format for expressing multiple tests, and a signal to
indicate the other breaking changes in this release.
Regex patterns now match against the path relative to the include directory, rather
than paths with respect to the crate root. This change was made for uniformity with the
include_dir implementation.
On Windows, paths are now universally normalized to use forward slashes. This change
was made to ensure that test names and paths are consistent across platforms.
Internal dependency updates: update libtest-mimic to 0.8.1, and fancy-regex to 0.14.0.
libtest-mimic to 0.8.1, and fancy-regex to 0.14.0.Previously, the test functions supported were fn(&Path) -> Result<()> and fn(&Utf8Path) -> Result<()> . This release adds additional supported functio
Previously, the test functions supported were fn(&Path) -> Result<()> and fn(&Utf8Path) -> Result<()>. This release adds additional supported functions:
fn(&P, String) -> datatest_stable::Result<()> where P is Path or Utf8Path. If theString parameter is specified, the contents of the file will be loaded and passed infn(&P, Vec<u8>) -> datatest_stable::Result<()> where P is Path or Utf8Path. If theVec<u8> parameter is specified, the contents of the file will beVec<u8> (erroring out if that failed).Previously, the test functions supported were fn(&Path) -> Result<()> and fn(&Utf8Path) -> Result<()>. This release adds additional supported functions:
fn(&P, String) -> datatest_stable::Result<()> where P is Path or Utf8Path. If the
extra String parameter is specified, the contents of the file will be loaded and passed in
as a string (erroring out if that failed).fn(&P, Vec<u8>) -> datatest_stable::Result<()> where P is Path or Utf8Path. If the
extra Vec<u8> parameter is specified, the contents of the file will be
loaded and passed in as a Vec<u8> (erroring out if that failed).Fixed quadratic performance issue with nextest, where datatest-stable would iterate over the entire list of files for each test. Thanks @zaneduffield
Switched to the fancy-regex crate, which allows for matching against regexes with lookahead/behind and backreferences. Thanks @webbdays for your first
fancy-regex crate, which allows for matching against regexes withUpdate to libtest-mimic 0.7.2 , and use the upstream implementation of ExitCode .
libtest-mimic 0.7.2, and use the upstream implementation of ExitCode.Exit main via ExitCode rather than std::exit() . This appears to fix coverage on Windows.
ExitCode rather than std::process::exit(). This appears to fix coverage onThis is a periodic maintenance release.
This is a periodic maintenance release.
Updated README.
Updated README.
Restored compatibility with fn(&Path) -> Result<()>. The harness now can take either fn(&Path) -> Result<()> or fn(&Utf8Path) -> Result<()>.
fn(&Path) -> Result<()>. The harness now can take either fn(&Path) -> Result<()> or fn(&Utf8Path) -> Result<()>.The test signature is now fn(&[Utf8Path]) rather than fn(&Path). If necessary, a Utf8Path can be converted to a &Path with [.as_ref()] or [.as_std_pat
fn(&Utf8Path) rather than fn(&Path). If necessary, a Utf8Path can be converted to a &Path with .as_ref() or .as_std_path().This version had a publishing issue.
This version had a publishing issue.
Errors are now displayed with the Debug implementation, which prints out the full error chain with libraries like anyhow or eyre, rather than the Disp
Debug implementation, which prints out the full error chain
with libraries like anyhow or eyre, rather than the Display implementation. Thanks
Alex Badics for your first contribution!New internal implementation, based on top of libtest-mimic.
There are no functional changes in this release.
Initial release with basic support for data-driven tests.
(Version 0.1.0 was yanked because of a metadata issue.)
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →