This crate offers a way to emulate the process of procedural macro expansion at run time.
It is intended for use with code coverage tools like cargo-tarpaulin
, which can't measure
the code coverage of anything that happens at compile time.
The runtime-macros
crate works with functionlike!
, #[attributelike]
, and #[derive(...)]
procedural macros. There are no plans to support declarative macros.
To use runtime-macros
, add a test case to your procedural macro crate that calls one of the
emulate_*_macro_expansion
functions on a .rs
file that calls the macro. Most likely, all the
files you'll want to use it on will be in your crate's /tests
directory. Once you've completed
this step, any code coverage tool that works with your crate's test cases will be able to report on
how thoroughly you've tested the macro.
See the /examples
directory in the repository for working examples.