Greetings, dear Rspec developers and users!
I am currently in the process of writing a Property Testing ('QuickCheck'-like) library, because while there exist a couple of gems that allow this,
they are either (a) very feature-incomplete and do not properly support shrinking, and/or (b) unmaintained for a very long time.
The basics of the library work, but I want to be able to integrate it with Rspec.
Essentially, this means that I want to introduce an alternate keyword instead of 'it', (named 'forall') which would call the block passed to it many times (a thousand by default) with different values of increasing complexity.
As soon as one call/set of inputs is found to cause a failure, the library will then shrink this set of inputs to be the simplest set of inputs that still causes a failure.
The current implementation of this works, but it assumes that all failures will be raised as exceptions, and that failures will not be captured/logged by some reporting mechanism in-between.
w.r.t. Rspec this means that I have the following questions:
1. How can I/should I wrap the test execution context?
3. Most importantly, I want to report the initial failure that happens (with the set of inputs at that time), as well as the failure that happens on the simplest shrunken set of inputs.
I do not want Rspec to report on the fifty failures that happened while shrinking.
Thank you,
~Qqwy/ W-M