Skip to content

Bump FsCheck from 2.16.6 to 3.3.2 - #59

Merged
jas88 merged 2 commits into
mainfrom
dependabot/nuget/FsCheck-3.3.2
Feb 11, 2026
Merged

jas88 merged 2 commits into
mainfrom
dependabot/nuget/FsCheck-3.3.2

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Feb 9, 2026 •

Copy link
Copy Markdown
Contributor

Updated FsCheck from 2.16.6 to 3.3.2.

Release notes

Sourced from FsCheck's releases.

3.3.2

Fixed FsCheck.NUnit failure reporting. (by Brian Rourke Boll)
Added a replay hint to failure message. (by Brian Rourke Boll)

3.3.1

Update xunit.v3.extensibility.core to v3.0.1 to fix a test discovery issue. (by Hyogeol Lee)

3.3.0

Added FsCheck.Xunit.v3. (by JohSand)

3.2.0

Support C# struct record generation. (by Brian Rourke Boll)
Xunit Property respects IAsyncLifetime. (by Arialdo Martini)

3.1.0

Support Async<'Testable> & Task<'Testable>. Slight behavior change: an explicit upcast to non-generic Task (:> Task) is now needed for tests involving Task<'T> where 'T is not itself a testable type. (by Brian Rourke Boll)

3.0.1

  • FsCheck.Xunit: target net462 explicitly, so xunit picks the right runner on .NET Framework.

3.0.0

  • Fix stamp missing for final test. (by Calum Sieppert)

  • FsCheck.NUnit: updated to NUnit 4. (with David Naylor)

  • FsCheck.NUnit: implement PropertiesAttribute. (by Oleksandr Bogomaz)

  • FsCheck.NUnit: handle NUnit's signalling exceptions. (by Oleksandr Bogomaz)

  • FsCheck.Xunit: fixed MissingMethodException caused by integration issue with xunit 2.9.x.

3.0.0-rc3

  • Breaking change: confusingly named StringNoNnulls is renamed to StringNoNullChar.
  • Breaking change: The operators |@, @| and %> are removed. Please use Prop.label instead.
  • Added more ForAll overloads for various Task types.
  • The collections types NonEmptySet, NonEmptyArray and FixedLengthArray now implement IEnnumerable to avoid a call to Get in common scenarios.
  • Enabled source linking and deterministic builds. (by Patrick Stevens)

3.0.0-rc2

  • Negative decimals are now also generated. (by Stephen Smith)

  • Relax FsCheck.Xunit's restriction on xUnit versions. (by Tom Rijnbeek)

  • Made Gen.choose64 public.

  • Remove dependency on FAKE and paket in favor of standard .NET tools. (by Patrick Stevens)cription of the release

3.0.0-rc1

  • Enable properties that return Task<T>. (by Mark Seemann)

  • Includes all changes up to 2.16.6.

3.0.0-beta2

Fixed bug that caused exceptions not to be propagated to output correctly.
Added a few missing methods in Fluent.Arbitrary.
Add a few missing Prop.ForAll overloads.
Includes changes in 2.16.4.

3.0.0-beta1

Backwards incompatible*: Refactor and split of the Gen and Arbitrary APIs into FsCheck.FSharp and FsCheck.Fluent. This is a first step in splitting the entire API into a functional (for F# consumers) and fluent (for C# and VB.NET consumers) interface. This should be clearer for both kinds of consumers.
By and large, if you are an F# user, now open FsCheck.FSharp in addition to open FsCheck. If you are a C# or VB.NET user, add using FsCheck.Fluent.
Backwards incompatible*: redesigned API for per-type Arbitrary instance discovery and lookup. There is no longer a single global, mutable map of type to Arbitrary instances, instead there are any number of immutable IArbMaps that can be configured at your leisure, and set via Config.WithArbitrary on the test.
Detailed changes to FsCheck.FSharp.Gen: Added RequireQualifiedAccess. Added apply and bind. Renamed collect and sequence to collect/sequenceToList/Array/Seq for clarity. Removed unzip and unzip3 - their implementation is problematic, and it's hard to see a use case for them. Removed subListOfToIlist, subListOfArr - these returned IList<'T> types. Untupled rows,cols arguments in array2DOfDim.
Detailed changes to FsCheck.Fluent.Gen: Split into non-extension methods on Gen and extension methods on Gen<T> type in GenExtensions. Removed Gen.Apply - not useful without partial application. Two, Three, Four and Zip now output ValueTuples, which is idiomatic in modern C#, and are only visible as extension methods on Gen<T>. Removed the overloads of Zip with arity 3. Changed the return type of methods that returned IList<T> previously to List<T>. Split the Sample method with optional arguments in three overloads, this is better for backwards compatibilty going forward.
Detailed changes to FsCheck.FSharp.Arb: Removed fromGenShrinkFunc. Removed register, registerByType, from, generate and shrink - these are replaced by functions on ArbMap, resp. mergeWith, mergeWithType, arbitrary and generate. Made Arb.Default internal. Default types should now be looked up using ArbMap, e.g. ArbMap.defaults |> ArbMap.arbitrary<list<int>>.
Detailed changes to FsCheck.Fluent.Arb: Removed extension method ToArbitrary that took an F# function as argument for the shrinker. Renamad Arb.From methods to Arbitrary.From - C# does not tolerate ambiguity between using two types of the same name in the same namespace. Removed Register, RegisterByType, From, Generate and Shrink - these are replaced by methods on ArbMap, resp. Merge<'T>, Merge, ArbFor and GeneratorFor. Made Arb.Default internal. Default Arbitrary types should now be looked up using ArbMap, e.g. ArbMap.Default.ArbFor<int[]>().
First pass at improving XML docs for Gen API.
Fixed bug in try..with computation expression builder.
Added support for let!...and!... syntax in computation expression builder.

3.0.0-alpha4

Propagate thread-local arbitraries to thread pool threads that are executing tests.

3.0.0-alpha3

NuGet packaging: relax FSharp.Core constraint to 4.0 and higher for .NET Desktop.

3.0.0-alpha2

Remove PCL builds. NET Standard is the way forward. Latest FSharp.Core builds don't even include PCL versions. As a result of the FSharp.Core dependency, FsCheck targets NET Standard 1.6.
Remove Prop.within.
Remove tuple and list testables.
Bug fix: Tasks that were faulted or canceled were not detected as test failures (by chrisoverzero)

3.0.0-alpha1

Update random number generator to SplitMix algorithm. (with thanks to Jack Pappas for making it fast)
Add support for parallel and async testing. (by Sergey - great effort!)
Simplify sampling data: Gen.sample et al.

Commits viewable in compare view.

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

High-level PR Summary

This PR updates the FsCheck testing framework dependency from version 2.16.6 to 3.3.2, which is a major version upgrade that includes breaking changes such as API refactoring, removal of deprecated methods, improved async/task support, and updates to test runner integrations for NUnit and xUnit.

⏱️ Estimated Review Time: 5-15 minutes

💡 Review Order Suggestion
Order File Path
1 Directory.Packages.props

Need help? Join our Discord


Summary by cubic

Upgraded FsCheck from 2.16.6 to 3.3.2 and migrated our property tests to the 3.x fluent API. Improves async/task support and makes NUnit failures clearer with replay hints; includes xUnit discovery fixes.

  • Migration
    • Use FsCheck.Fluent (Prop, Arb, Gen) in tests.
    • Replace new Configuration with Config.Quick.WithMaxTest(N).
    • Switch Gen.ArrayOf/ListOf to gen.ArrayOf(n)/gen.ListOf(n) extensions.
    • Replace |@, @|, %> with Prop.label where needed; upcast non-testable Task to Task.

Written for commit 470539e. Summary will update on new commits.

@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Feb 9, 2026

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 1 file

@recurseml recurseml Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review by RecurseML

🔍 Review performed on 296915c..6c44478

✨ No bugs found, your code is sparkling clean

✅ Files analyzed, no issues (1)

• Directory.Packages.props

---
updated-dependencies:
- dependency-name: FsCheck
  dependency-version: 3.3.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/nuget/FsCheck-3.3.2 branch from 6c44478 to 141684a Compare February 11, 2026 03:48
- Add `using FsCheck.Fluent` for C# fluent API (Prop, Arb, Gen)
- Replace `new Configuration { ... }` with `Config.Quick.WithMaxTest(N)`
- Change `Gen.ArrayOf(n, gen)` to `gen.ArrayOf(n)` (extension method)
- Change `Gen.ListOf(n, gen)` to `gen.ListOf(n)` (extension method)
@codecov

codecov Bot commented Feb 11, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.37%. Comparing base (21dfd52) to head (470539e).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #59      +/-   ##
==========================================
- Coverage   64.37%   64.37%   -0.01%     
==========================================
  Files         336      336              
  Lines       30277    30277              
  Branches     5685     5685              
==========================================
- Hits        19491    19490       -1     
- Misses       9427     9428       +1     
  Partials     1359     1359              
Flag Coverage Δ
unittests 64.37% <ø> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@jas88
jas88 merged commit f8f2fcb into main Feb 11, 2026
6 checks passed
@jas88
jas88 deleted the dependabot/nuget/FsCheck-3.3.2 branch February 11, 2026 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant