Macro version_sync::assert_contains_regex
source · macro_rules! assert_contains_regex { ($path:expr, $format:expr) => { ... }; }
Expand description
Assert that 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 changelog file. You do this by specifying a regular expression which will be matched against the contents of the file.
The macro calls check_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_mentions_version() {
version_sync::assert_contains_regex!("README.md", "^### Version {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 there is a
heading mentioning the current version of your crate.
The regular expression can contain placeholders which are replaced before the regular expression search begins:
{version}
: the current version number of your package.{name}
: the name of your package.
This way you can search for things like "Latest version of {name} is: {version}"
and make sure you update your READMEs and
changelogs consistently.
Panics
If the regular expression cannot be found, panic!
will be
invoked and your integration test will fail.