Skip to content

Latest commit

 

History

History
198 lines (122 loc) · 6.01 KB

CHANGELOG.md

File metadata and controls

198 lines (122 loc) · 6.01 KB

0.4.0

Potential Breaking Changes

  • proptest::char::ANY replaced with proptest::char::any(). proptest::char::ANY is present but deprecated, and will be removed in proptest 0.5.0.

  • Instead of returning -> Result<Self::Value, String>, strategies are expected to return -> Result<Self::Value, Reason> instead. Reason reduces the amount of heap allocations, especially for .prop_filter(..) where you may now also pass in &'static str. You will only experience breaks if you've written your own strategy types or if you've used TestCaseError::Reject or TestCaseError::Fail explicitly.

  • Update of externally-visible crate rand to 0.4.2.

New Additions

  • Added proptest::test_runner::Reason which allows you to avoid heap allocation in some places and may be used to make the API richer in the future without incurring more breaking changes.

  • Added a type alias proptest::strategy::NewTree<S> where S: Strategy defined as: type NewTree<S> = Result<<S as Strategy>::Value, Rejection>.

0.3.4

Bug Fixes

  • Cases where file!() returns a relative path, such as on Windows, are now handled more reasonably. See #24 for more details and instructions on how to migrate any persistence files that had been written to the wrong location.

0.3.3

Boxing Day Special

New Additions

  • Added support for i128 and u128. Since this is an unstable feature in Rust, this is hidden behind the feature unstable which you have to explicitly opt into in your Cargo.toml file.

  • Failing case persistence. By default, when a test fails, Proptest will now save the seed for the failing test to a file, and later runs will test the persisted failing cases before generating new ones.

  • Added UniformArrayStrategy and helper functions to simplify generating homogeneous arrays with non-Copy inner strategies.

  • Trait rand::Rng and struct rand::XorShiftRng are now included in proptest::prelude.

Bug Fixes

  • Fix a case where certain combinations of strategies, like two prop_shuffle()s in close proximity, could result in low-quality randomness.

0.3.2

New Additions

  • Added SampledBitSetStrategy to generate bit sets based on size distribution.

  • Added Strategy::sboxed() and SBoxedStrategy to make Send + Sync boxed strategies.

  • RegexGeneratorStrategy is now Send and Sync.

  • Added a type alias ValueFor<S> where S: Strategy. This is a shorter way to refer to: <<S as Strategy>::Value as ValueTree>::Value.

  • Added a type alias type W<T> = (u32, T) for a weighted strategy T in the context of union strategies.

  • TestRunner now implements Default.

  • Added Config::with_cases(number_of_cases: u32) -> Config for simpler construction of a Config that only differs by the number of test cases.

  • All default fields of Config can now be overridden by setting environment variables. See the docs of that struct for more details.

  • Bumped dependency rand = "0.3.18".

  • Added proptest::sample::subsequence which returns a strategy generating subsequences, of the source Vec, with a size within the given Range.

  • Added proptest::sample::select which returns a strategy selecting exactly one value from another collection.

  • Added prop_perturb strategy combinator.

  • Added strategy::check_strategy_sanity() function to do sanity checks on the shrinking implementation of a strategy.

  • Added prop_shuffle strategy combinator.

  • Added strategy::Fuse adaptor.

Bug Fixes

  • Fix bug where Vec, array and tuple shrinking could corrupt the state of their inner values, for example leading to out-of-range integers.

  • Fix bug where Flatten (a.k.a. the prop_flat_map combinator) could fail to converge to a failing test case during shrinking.

  • Fix TupleUnion sometimes panicking during shrinking if there were more than two choices.

0.3.1

New Additions

  • Added CharStrategy::new_borrowed.

0.3.0

New Additions

  • Union now supports weighting via Union::new_weighted. Corresponding syntax to specify weights is also available in prop_oneof!.

  • Added TupleUnion, which works like Union but permits doing static dispatch even with heterogeneous delegate strategies.

  • prop_oneof! is smarter about how it combines the input strategies.

  • Added option module to generate weighted or unweighted Option types.

  • Added result module to generate weighted or unweighted Result types.

  • All bits submodules now have a masked function to create a strategy for generating subsets of an arbitrary bitmask.

Potential Breaking Changes

  • Union::new now has a generic argument type which could impact type inference.

  • The concrete types produced by prop_oneof! have changed.

  • API functions which used to return BoxedStrategy now return a specific type.

  • BitSetStrategy<T> is no longer Copy for non-Copy types T nor Debug for non-Debug types T.

  • BitSetLike::max has been renamed to BitSetLike::len.

0.2.1

New Additions

  • Added prop_assert! macro family to assert without panicking, for quieter test failure modes.

  • New prelude module for easier importing of important things.

  • Renamed Singleton to Just. (The old name is still available.)

  • Failure messages produced by proptest! are now much more readable.

  • Added in-depth tutorial.

0.2.0

Breaking Changes

  • Strategy now requires std::fmt::Debug.

New Additions

  • Strategy now has a family of prop_flat_map() combinators for producing dynamic and higher-order strategies.

  • Strategy has a prop_recursive() combinator which allows generating recursive structures.

  • Added proptest::bool::weighted() to pull booleans from a weighted distribution.

  • New prop_oneof! macro makes it easier to select from one of several strategies.

  • New prop_compose! macro to simplify writing most types of custom strategies.

0.1.1

New Additions

Add strategy::NoShrink, Strategy::no_shrink().