macro_rules! assert_only_contains_regex {
    ($path:expr, $format:expr) => { ... };
}
Expand description

Assert that all versions numbers are up to date via a regex.

This macro allows you verify that the current version number is mentioned in a particular file, such as a README file. You do this by specifying a regular expression which will be matched against the contents of the file.

The macro calls check_only_contains_regex on the file name given. The package name and current package version is automatically taken from the $CARGO_PKG_NAME and $CARGO_PKG_VERSION environment variables. These environment variables are automatically set by Cargo when compiling your crate.

This macro is enabled by the contains_regex feature.

Usage

The typical way to use this macro is from an integration test:

#[test]
fn test_readme_links_are_updated() {
    version_sync::assert_only_contains_regex!("README.md", "docs.rs/{name}/{version}/");
}

Tests are run with the current directory set to directory where your Cargo.toml file is, so this will find a README.md file next to your Cargo.toml file. It will then check that all links to docs.rs for your crate contain the current version of your crate.

The regular expression can contain placeholders which are replaced as follows:

  • {version}: the version number of your package.
  • {name}: the name of your package.

The {version} placeholder will match compatible versions, meaning that {version} will match all of 1.2.3, 1.2, and 1 when your package is at version 1.2.3.

Panics

If the regular expression cannot be found or if some matches are not updated, panic! will be invoked and your integration test will fail.