Migrate to FsCheck3 in a separate project #450
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
I'd like to FsCheck version 3 for some of its improvements, but Expecto currently doesn't work with FsCheck 3.
What This PR Changes
Separate Migrated Assembly
This PR adds a new project with FsCheck 3 support that we could publish separately. FsCheck 3 may not reach full-release any time soon. This way users can opt-in to FsCheck3 without disrupting the mainline Expecto.FsCheck project.
An alternative solution would be to create pre-release versions of the Expecto.FsCheck package using a
-fscheck3
suffix to differentiate from the normal pre-release packages. This option may require maintaining a special branch. It might also be possible to leave the separate projects but use the same package id and publish special pre-release versions from the migrated project. However, it's unclear how version selection may work for users that specify non-deterministic pre-release versions.In short, the pro is that we don't have to manage a separate package and eventually deprecate it. The con is a potentially confusing version experience.
Migration changes
The migration itself was pretty simple.
No new FsCheck features are directly leveraged in the current migration.
Breaking Changes
FsCheck changed the way they handle random values, so the same Repeat seed does not produce consistent results across verions. Thus Expecto's unit tests depending on a deterministic result cannot pass on FsCheck 2 & 3 without modification.