From c77366312be7afb90b9c649ec986a06e8d352ce8 Mon Sep 17 00:00:00 2001 From: Andrew Gallant Date: Sun, 27 Dec 2020 16:23:20 -0500 Subject: [PATCH] semver: add note on compatibility 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. --- README.md | 9 +++++++++ src/lib.rs | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/README.md b/README.md index b360c04..4568443 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/src/lib.rs b/src/lib.rs index b9351fa..58dc99d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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};