Skip to content

Commit

Permalink
semver: add note on compatibility
Browse files Browse the repository at this point in the history
It seems wise to permit us room to change Arbitrary impl
strategies without it being considered a breaking change.

The reasoning for this is that it provides a lot more flexibility in
the implementation and removes grey areas where one needs to decide
whether a change to the generation logic is breaking or not.

Moreover, if a strategy is changed and causes a new test failure in a
dependent, then presumably this is indicative of a bug in the
dependent and is a good thing.
  • Loading branch information
BurntSushi committed Dec 27, 2020
1 parent d44b417 commit c773663
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 152,15 @@ aggressive than `rand`'s MSRV policy. Otherwise, `quickcheck` will defer to
`rand`'s MSRV policy.


### Compatibility

In general, this crate considers the `Arbitrary` implementations provided as
implementation details. Strategies may or may not change over time, which may
cause new test failures, presumably due to the discovery of new bugs due to a
new kind of witness being generated. These sorts of changes may happen in
semver compatible releases.


### Alternative Rust crates for property testing

The [`proptest`](https://docs.rs/proptest) crate is inspired by the
Expand Down
8 changes: 8 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 4,14 @@ This crate is a port of
For detailed examples, please see the
[README](https://github.com/BurntSushi/quickcheck).
# Compatibility
In general, this crate considers the `Arbitrary` implementations provided as
implementation details. Strategies may or may not change over time, which may
cause new test failures, presumably due to the discovery of new bugs due to a
new kind of witness being generated. These sorts of changes may happen in
semver compatible releases.
*/

pub use crate::arbitrary::{empty_shrinker, single_shrinker, Arbitrary, Gen};
Expand Down

0 comments on commit c773663

Please sign in to comment.