rspec icon indicating copy to clipboard operation
rspec copied to clipboard

Support for adding tags to suites/contexts/examples

Open regexident opened this issue 8 years ago • 4 comments

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.

Proof-of-concept

(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.

regexident avatar Oct 23 '17 23:10 regexident

Would the Macro 1.1, require users to apply the #[Derive(TraitWhatever)] statement to get the compile time failures?

JustinRyanH avatar Oct 27 '17 20:10 JustinRyanH

Probably, yes. Unless rspec provided a convenience macro à la

rspec_tags!(
    foo, bar, baz, blee
);

which would do all the necessary work for you.

regexident avatar Oct 28 '17 12:10 regexident

as I said, not convince by the need. I would like someone to step up and say that he/she really needs this feature.

mackwic avatar Oct 28 '17 16:10 mackwic

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=smoke for a quick smoke test.

… to my project’s documentation.

regexident avatar Oct 28 '17 17:10 regexident