Support for adding tags to suites/contexts/examples
I have the feeling that instead of implementing dedicated logic for skipping of/focussing on specific suites/contexts/examples it might be a good idea to instead add support for adding custom tags.
This along with a way to filter for tags (both positively foo, as well as negatively ~bar) would then add functionality equivalent to these features:
And as we're doing Rust we might as well go the extra mile and make the tags type-safe.
Suite/Context/Example would thus be generic over E: Environment as well as T: Tag.
(We should further more be able to provide a stable derive for TryFrom<&'a str> for T via macros 1.1, afaict.)
This way one would define the Tags for a given test scenario (group of suites tied to the types of a given Environment), and any typo within the test code would be caught by the compiler, while passing an unknown tag to an (at this point still) imaginary CLI à la cargo spec --filter="baz" would trigger an error message on execution.
Would the Macro 1.1, require users to apply the #[Derive(TraitWhatever)] statement to get the compile time failures?
Probably, yes. Unless rspec provided a convenience macro à la
rspec_tags!(
foo, bar, baz, blee
);
which would do all the necessary work for you.
as I said, not convince by the need. I would like someone to step up and say that he/she really needs this feature.
I’d like to be able to mark contexts as smoke, exhaustive, etc. So that I can easily add …
Smoke Test
Run the test suite using
$ cargo run tests —include=smokefor a quick smoke test.
… to my project’s documentation.