-
Notifications
You must be signed in to change notification settings - Fork 91
Description
This module should be gated behind a check cargo feature.
It should provide a really simple property-based testing framework for combining Arbitrary-based generators with your oracles/property functions that can be used as smoke tests in local development and on CI, where it is often not always feasible to run the full cargo fuzz targets for a while due to various constraints (build time, length of time required to run, etc...). It would not be intended to replace long-running fuzzers leveraging coverage-guided feedback in the background, it would be a compliment to them for the local quick-test and CI uses previously described.
This is something I've wanted for a while, because I'm tired of doing it crappily by hand, but have obviously never gotten around to.
But, at some point, @matklad made the arbtest crate which is exactly what I'd been imagining, it's fantastic. Thank you very much for creating this, @matklad!
So my purposes for opening this issue are to gauge two things:
- Other
arbitrarymaintainers: how do you feel about having such a feature/module in this crate? - @matklad: how do you feel about merging
arbtestinto this crate, asarbitrary::check?
The primary advantages I see of moving arbtest into arbitrary::check, instead of maintaining the current state with separate crates are:
- More discoverability
- Simpler usage for downstream users: don't need to depend on two different things; don't need to worry about version wrangling, especially if we ever make a breaking release of
arbitrary - Tighter integration: can make sure that existing
arbitraryfeatures are properly taken advantage of byarbtest/arbitrary::checkand can make sure that as we develop newarbitraryfeatures they are designed in such a way thatarbtest/arbitrary::checkcan actually leverage them, resulting in better designs and features overall
So, what do y'all think?