New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Treat record structs as records #2009
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔧 You also need to update the releases.md
file to mention this change
🤔 Anything to add to the objectgraph.md
file about support for record structs?
.GetMethod? | ||
.GetCustomAttribute(typeof(CompilerGeneratedAttribute)) is not null); | ||
{ | ||
bool isRecord = t.GetMethod("<Clone>$") is not null && |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔧 For readability I would prefer to clean-up the layout a little bit and keep an empty line between the two boolean statements
🤔 Any links to background material that we can add here for future reference?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No real background material actually, besides the link already posted in the linked issue (https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs#open-questions) where it is stated that recognizing record structs is an open point.
This pull request is based on common sense and heuristic testing, apparently giving good results but not supported by official documentation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would mention exactly using in-line comments
Pull Request Test Coverage Report for Build 3237204129Warning: This coverage report may be inaccurate.We've detected an issue with your CI configuration that might affect the accuracy of this pull request's coverage report.
💛 - Coveralls |
I guess you mean objectgraphs.md. I'm unsure about it, because it depends on how broad the meaning of "record" is in that context. If "record" is an umbrella term to mean both reference-type-based records and value-type-based record structs (either readonly or not), nothing has to be changed, otherwise we could be more explicit. For example, I was quite surprised discovering that record structs were not treated as records. |
Yes, sorry, that's what I meant. I think it wouldn't hurt to mention all of them. |
var isRecordStruct = t.BaseType == typeof(ValueType) && | ||
t.GetMethods() | ||
.Where(m => m.Name == "op_Inequality") | ||
.SelectMany(m => m.GetCustomAttributes(typeof(CompilerGeneratedAttribute))) | ||
.Any() && | ||
t.GetMethods() | ||
.Where(m => m.Name == "op_Equality") | ||
.SelectMany(m => m.GetCustomAttributes(typeof(CompilerGeneratedAttribute))) | ||
.Any(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While this is probably the best we can currently do, I wonder a bit if this is still too broad a check?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm afraid of this too. This is backed by MSDN too (see comment). I've tried my best to "crack" this test and was not able to, but please feel free to add counter-examples.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Checking for one operator should be enough.
var isRecordStruct = t.BaseType == typeof(ValueType) &&
t.GetMethod("op_Equality", BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly, null, new[] { t, t }, null)?
.GetCustomAttribute(typeof(CompilerGeneratedAttribute)) is not null;
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had another look at creating a heuristic to identify record structs with few false positives.
specifies that a record struct
contains a synthesized (read has [CompilerGenerated]
)
private bool PrintMembers(System.Text.StringBuilder builder)
The name PrintMembers
is also a public part of Roslyn.
var isRecordStruct = t.BaseType == typeof(ValueType) &&
t.GetMethod("PrintMembers", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly, null, new[] { typeof(StringBuilder) }, null)?
.GetCustomAttribute(typeof(CompilerGeneratedAttribute)) is { };
What do you think about this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That may be a good catch. I'll look into it!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure I understand you here 🤔
As a record struct currently doesn't have any unspeakable parts, it's always possible to write a struct in plain C# that looks like a record struct.
E.g. this is valid C# code, SharpLab
public struct A
{
[CompilerGenerated]
public static bool operator ==(A x, A y) => true;
[CompilerGenerated]
public static bool operator !=(A x, A y) => false
}
I tried another thing.
I made a record struct Auto {}
and copied its output back into regular C# code.
The only thing I wasn't allowed to was using [IsReadOnly]
as that gave a compiler error.
error CS8335: Do not use 'System.Runtime.CompilerServices.IsReadOnlyAttribute'. This is reserved for compiler usage.
PrintMembers
is annotated with [IsReadOnly]
So what do you think about checking for this?
var isRecordStruct = t.BaseType == typeof(ValueType) &&
t.GetMethod("PrintMembers", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly, null, new[] { typeof(StringBuilder) }, null)?
.GetCustomAttribute(typeof(IsReadOnlyAttribute)) is { };
I don't know if an arbitrary source generator is allowed to use [IsReadOnly]
.
IL weaving would most likely be able to circumvent CS8335, but we aren't looking for a bullet proof solution.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Interesting! I didn't know one could annotate with [CompilerGenerated] in source code; it looks a little silly to me that you can, but it is what it is I suppose :)
In this case, I definitely like your proposal with PrintMembers and IsReadOnly more. Let me try to give a couple of final touches and I'll be back with a new commit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jnyrup I have just tried the last proposal checking for a PrintMembers annotated with IsReadOnly. IsReadOnly is not available on NET47 and NETSTANDARD2_0, so it does not compile on those target, but here the problem is just my ignorance on properly handling multi-target.
The major problem for me is that the check fails for the MyReadOnlyRecordStruct and MyRecordStructWithCustomPrintMembers tests, for which PrintMembers has not the IsReadOnly attribute.
For this reason, at the end of the day (literally, for me 😄 ) I believe the lesser evil for now is checking for compiler generated equality, knowing that we can have a false positive if someone uses the [CompilerGenerated] attribute in source code (I have added a test to document this).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aha!
I hadn't thought about the case in MyRecordStructWithCustomPrintMembers
where one implements PrintMembers
themselves such that the compiler doesn't create one.
Well found 👍
So it seems there will always be a PrintMembers
, but we don't know who wrote it.
This code handles all your test cases and the false positive.
public static bool IsRecord(this Type type)
{
return TypeIsRecordCache.GetOrAdd(type, static t => t.IsRecordClass() || t.IsRecordStruct());
}
private static bool IsRecordClass(this Type type)
{
return type.GetMethod("<Clone>$", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly) is { } &&
type.GetProperty("EqualityContract", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)?
.GetMethod?.IsDecoratedWith<CompilerGeneratedAttribute>() == true;
}
private static bool IsRecordStruct(this Type type)
{
// As noted here: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs#open-questions
// recognizing record structs from metadata is an open point. The following check is based on common sense
// and heuristic testing, apparently giving good results but not supported by official documentation.
return type.BaseType == typeof(ValueType) &&
type.GetMethod("PrintMembers", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly, null, new[] { typeof(StringBuilder) }, null) is { } &&
type.GetMethod("op_Equality", BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly, null, new[] { type, type }, null)?
.IsDecoratedWith<CompilerGeneratedAttribute>() == true;
}
I would be confident enough with this one.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good idea: this way we rely on the two documented behaviors of record structs!
There is still a small possibility of a false positive, where one both implements a PrintMember and annotates equality with [CompilerGenerated] (I have added a test for reference), but I'd consider such code as deliberate sabotage 😄
@salvois any follow-up? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was probably waiting for me.
My concerns boils down to how many false positives the heuristic will have and if we're willing to take that risk, or we want to wait until C# eventually resolves the open point about recognizing record structs.
docs/_pages/objectgraphs.md
Outdated
@@ -48,7 +48,7 @@ subject.Should().BeEquivalentTo(expected, | |||
options => options.ComparingByValue<IPAddress>()); | |||
``` | |||
|
|||
For records, this works like this: | |||
For records, record structs and readonly record structs this works like this: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For records, record structs and readonly record structs this works like this: | |
For records and record structs this works like this: |
var isRecordStruct = t.BaseType == typeof(ValueType) && | ||
t.GetMethods() | ||
.Where(m => m.Name == "op_Inequality") | ||
.SelectMany(m => m.GetCustomAttributes(typeof(CompilerGeneratedAttribute))) | ||
.Any() && | ||
t.GetMethods() | ||
.Where(m => m.Name == "op_Equality") | ||
.SelectMany(m => m.GetCustomAttributes(typeof(CompilerGeneratedAttribute))) | ||
.Any(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Checking for one operator should be enough.
var isRecordStruct = t.BaseType == typeof(ValueType) &&
t.GetMethod("op_Equality", BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly, null, new[] { t, t }, null)?
.GetCustomAttribute(typeof(CompilerGeneratedAttribute)) is not null;
I think it's fair for people to expect FA to properly handle record structs the way we treat other records. So although we're not fully confident we can cover all edge cases, I think it's worth the risk. Whatever comes after that, we'll fix. |
Hi @dennisdoomen , @jnyrup , I hope the new year finds you well. |
@salvois any progress? |
Hi @dennisdoomen , I should be able to find some spare time today. Thanks |
Hah, the spell check target fails on |
:D @salvois wrapping structs into `` But cool to prove it works 🎉 |
Co-authored-by: IT-VBFK <49762557+IT-VBFK@users.noreply.github.com>
Try to finish #2093 today.. stay tuned 🙃 |
Co-authored-by: IT-VBFK <49762557+IT-VBFK@users.noreply.github.com>
Thanks @dennisdoomen , @IT-VBFK and @jnyrup , I really enjoyed the constructive exchange and I also got the opportunity to learn something new! |
You should never stop to improve yourself :) |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [FluentAssertions](https://www.fluentassertions.com/) ([source](https://togithub.com/fluentassertions/fluentassertions)) | nuget | minor | `6.8.0` -> `6.9.0` | --- ### Release Notes <details> <summary>fluentassertions/fluentassertions</summary> ### [`v6.9.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.9.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.8.0...6.9.0) <!-- Release notes generated using configuration in .github/release.yml at master --> ##### What's Changed ##### New features - Added `BeOneOf` for `IComparable`s and object comparisons. by [@​jez9999](https://togithub.com/jez9999) in [fluentassertions/fluentassertions#2028 - Add `BeCloseTo()` / `NotBeCloseTo()` to TimeOnlyAssertions by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2030 - Add `ThatAre[Not]Abstract`, `ThatAre[Not]Static` and `ThatAre[Not]Virtual` to `PropertyInfoSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2054 - Add `ThatAre[Not]Abstract` to `MethodInfoSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2060 - Add `ThatAre[Not]Abstract` to `TypeSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2058 - Add `ThatAre[Not]Sealed` to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2059 - Add `ThatAre[Not]Interfaces` to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2057 - Add extensions for `OccurrenceConstraint` that reads more fluently by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2047 - Add `Imply()` to `BooleanAssertions` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2074 - Add `ThatAre[Not]ValueTypes` method to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2083 ##### Improvements - Order strings with ordinal comparison by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2075 - Improve performance of `IsTuple()` by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2079 - Optimize `IsRecord()` by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2080 ##### Fixes - Nested `AssertionScope`s do not print inner scope reportables by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2044 - Extend `ThatArePublicOrInternal` to also look at the setter of properties by [@​Ruijin92](https://togithub.com/Ruijin92) in [fluentassertions/fluentassertions#2082 - Treat record structs as records by [@​salvois](https://togithub.com/salvois) in [fluentassertions/fluentassertions#2009 ##### Documentation - Document alternatives for collection order by [@​nycdotnet](https://togithub.com/nycdotnet) in [fluentassertions/fluentassertions#2063 - Document that `PathMap` is currently not supported by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2067 - Use langword instead of <c> for C# keywords by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2070 - Add missing exceptions to xml summaries by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2023 - Improve `Guard` helper by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2076 - Add issue templates and api review process by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2078 - Add `cSpell` to NUKE build pipeline by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2086 ##### Others - Enable CI unit tests on linux and mac by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2021 - update catch phrase url by [@​danielchalmers](https://togithub.com/danielchalmers) in [fluentassertions/fluentassertions#2025 - Prepare approval tests for .NET 7 by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2024 - Use PolySharp to generate polyfill attributes by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2026 - New unit test to verify CompleteWithinAsync behaves correctly in an assertion scope by [@​lg2de](https://togithub.com/lg2de) in [fluentassertions/fluentassertions#2033 - Fix nuget config to be able to restore/build the project when having custom HTTP nuget sources by [@​ITaluone](https://togithub.com/ITaluone) in [fluentassertions/fluentassertions#2032 - Improve coverage on data assertions by [@​lg2de](https://togithub.com/lg2de) in [fluentassertions/fluentassertions#2037 - Bump minimum SDK to 6.0.400 by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2038 - Let `EquatableOfInt` implement `IComparable<T>` by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2036 - New tests for better code coverage on collection assertions by [@​lg2de](https://togithub.com/lg2de) in [fluentassertions/fluentassertions#2035 - Comparable type assertions referential equality by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2046 - Use TheoryData by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2068 - Pattern combinators by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2039 - Update nugets by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2077 - Set process dotnet cli language to en-US by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2084 - Bump required .NET SDK to v7 by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2087 - Optimize NUKE spell check by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2089 - Cleanups by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2081 - Fix build breaking on non PR branches by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2090 - Add process env variable `DOTNET_CLI_UI_LANGUAGE` also inside targets by [@​ITaluone](https://togithub.com/ITaluone) in [fluentassertions/fluentassertions#2092 ##### New Contributors - [@​danielchalmers](https://togithub.com/danielchalmers) made their first contribution in [fluentassertions/fluentassertions#2025 - [@​jez9999](https://togithub.com/jez9999) made their first contribution in [fluentassertions/fluentassertions#2028 - [@​94sedighi](https://togithub.com/94sedighi) made their first contribution in [fluentassertions/fluentassertions#2054 - [@​Ruijin92](https://togithub.com/Ruijin92) made their first contribution in [fluentassertions/fluentassertions#2082 - [@​salvois](https://togithub.com/salvois) made their first contribution in [fluentassertions/fluentassertions#2009 **Full Changelog**: fluentassertions/fluentassertions@6.8.0...6.9.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 10pm every weekday,every weekend,before 5am every weekday" in timezone Europe/Berlin, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/orso-co/Orso.Arpa.Api). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xMDIuNyIsInVwZGF0ZWRJblZlciI6IjM0LjEwMi43In0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [FluentAssertions](https://www.fluentassertions.com/) ([source](https://togithub.com/fluentassertions/fluentassertions)) | nuget | minor | `6.7.0` -> `6.10.0` | --- ### Release Notes <details> <summary>fluentassertions/fluentassertions</summary> ### [`v6.10.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.10.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.9.0...6.10.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### Fixes - Declare `System.Net.Http` as a framework dependency by [@​AArnott](https://togithub.com/AArnott) in [fluentassertions/fluentassertions#2122 - Improves how `BeEquivalentTo` handles fields hiding base-class fields by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [fluentassertions/fluentassertions#1990 - Fix timeout check in `WithResult` extension by [@​lg2de](https://togithub.com/lg2de) in [fluentassertions/fluentassertions#2101 - Avoid exceptions when wrapping in `AssertionScope` by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2103 ##### Others - Fix copyright year by [@​ITaluone](https://togithub.com/ITaluone) in [fluentassertions/fluentassertions#2099 - Fix broken link in releases.md by [@​ITaluone](https://togithub.com/ITaluone) in [fluentassertions/fluentassertions#2096 - Check if `lcov.info` does exist by [@​ITaluone](https://togithub.com/ITaluone) in [fluentassertions/fluentassertions#2097 - Clean up `Build.cs` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2093 - Updated editor configs by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [fluentassertions/fluentassertions#2104 - Revert early returns for project consistency by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2105 - Update data.md to fix typo by [@​berserck](https://togithub.com/berserck) in [fluentassertions/fluentassertions#2114 - Add unit tests for better coverage in Execution namespace by [@​lg2de](https://togithub.com/lg2de) in [fluentassertions/fluentassertions#2042 - Add code coverage to XUnit2.Specs by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2115 - Regrouping and formatting of the selection rule specs by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [fluentassertions/fluentassertions#2106 - Add fancy `ReportSummary` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2116 - Add new issue template for a general feature by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2113 - Add missing tests for `int.Seconds(TimeSpan)` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2119 - Add test summaries by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2118 - Declare few more files as `DocumentationChanges` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2100 - Remove unused InstallPfx.bat by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2124 #### New Contributors - [@​berserck](https://togithub.com/berserck) made their first contribution in [fluentassertions/fluentassertions#2114 - [@​AArnott](https://togithub.com/AArnott) made their first contribution in [fluentassertions/fluentassertions#2122 **Full Changelog**: fluentassertions/fluentassertions@6.9.0...6.10.0 ### [`v6.9.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.9.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.8.0...6.9.0) <!-- Release notes generated using configuration in .github/release.yml at master --> ##### What's Changed ##### New features - Added `BeOneOf` for `IComparable`s and object comparisons. by [@​jez9999](https://togithub.com/jez9999) in [fluentassertions/fluentassertions#2028 - Add `BeCloseTo()` / `NotBeCloseTo()` to TimeOnlyAssertions by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2030 - Add `ThatAre[Not]Abstract`, `ThatAre[Not]Static` and `ThatAre[Not]Virtual` to `PropertyInfoSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2054 - Add `ThatAre[Not]Abstract` to `MethodInfoSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2060 - Add `ThatAre[Not]Abstract` to `TypeSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2058 - Add `ThatAre[Not]Sealed` to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2059 - Add `ThatAre[Not]Interfaces` to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2057 - Add extensions for `OccurrenceConstraint` that reads more fluently by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2047 - Add `Imply()` to `BooleanAssertions` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2074 - Add `ThatAre[Not]ValueTypes` method to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2083 ##### Improvements - Order strings with ordinal comparison by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2075 - Improve performance of `IsTuple()` by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2079 - Optimize `IsRecord()` by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2080 ##### Fixes - Nested `AssertionScope`s do not print inner scope reportables by [@​94sedighi](https://togithub.com/94sedighi) in [fluentassertions/fluentassertions#2044 - Extend `ThatArePublicOrInternal` to also look at the setter of properties by [@​Ruijin92](https://togithub.com/Ruijin92) in [fluentassertions/fluentassertions#2082 - Treat record structs as records by [@​salvois](https://togithub.com/salvois) in [fluentassertions/fluentassertions#2009 ##### Documentation - Document alternatives for collection order by [@​nycdotnet](https://togithub.com/nycdotnet) in [fluentassertions/fluentassertions#2063 - Document that `PathMap` is currently not supported by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2067 - Use langword instead of <c> for C# keywords by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2070 - Add missing exceptions to xml summaries by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2023 - Improve `Guard` helper by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2076 - Add issue templates and api review process by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2078 - Add `cSpell` to NUKE build pipeline by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2086 ##### Others - Enable CI unit tests on linux and mac by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2021 - update catch phrase url by [@​danielchalmers](https://togithub.com/danielchalmers) in [fluentassertions/fluentassertions#2025 - Prepare approval tests for .NET 7 by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2024 - Use PolySharp to generate polyfill attributes by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2026 - New unit test to verify CompleteWithinAsync behaves correctly in an assertion scope by [@​lg2de](https://togithub.com/lg2de) in [fluentassertions/fluentassertions#2033 - Fix nuget config to be able to restore/build the project when having custom HTTP nuget sources by [@​ITaluone](https://togithub.com/ITaluone) in [fluentassertions/fluentassertions#2032 - Improve coverage on data assertions by [@​lg2de](https://togithub.com/lg2de) in [fluentassertions/fluentassertions#2037 - Bump minimum SDK to 6.0.400 by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2038 - Let `EquatableOfInt` implement `IComparable<T>` by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2036 - New tests for better code coverage on collection assertions by [@​lg2de](https://togithub.com/lg2de) in [fluentassertions/fluentassertions#2035 - Comparable type assertions referential equality by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2046 - Use TheoryData by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2068 - Pattern combinators by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2039 - Update nugets by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2077 - Set process dotnet cli language to en-US by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2084 - Bump required .NET SDK to v7 by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2087 - Optimize NUKE spell check by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2089 - Cleanups by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2081 - Fix build breaking on non PR branches by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2090 - Add process env variable `DOTNET_CLI_UI_LANGUAGE` also inside targets by [@​ITaluone](https://togithub.com/ITaluone) in [fluentassertions/fluentassertions#2092 ##### New Contributors - [@​danielchalmers](https://togithub.com/danielchalmers) made their first contribution in [fluentassertions/fluentassertions#2025 - [@​jez9999](https://togithub.com/jez9999) made their first contribution in [fluentassertions/fluentassertions#2028 - [@​94sedighi](https://togithub.com/94sedighi) made their first contribution in [fluentassertions/fluentassertions#2054 - [@​Ruijin92](https://togithub.com/Ruijin92) made their first contribution in [fluentassertions/fluentassertions#2082 - [@​salvois](https://togithub.com/salvois) made their first contribution in [fluentassertions/fluentassertions#2009 **Full Changelog**: fluentassertions/fluentassertions@6.8.0...6.9.0 ### [`v6.8.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.8.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.7.0...6.8.0) <!-- Release notes generated using configuration in .github/release.yml at develop --> #### What's Changed ##### New features - Extend collection assertions with `ContainInConsecutiveOrder` and `NotContainInConsecutiveOrder` by [@​StacyCash](https://togithub.com/StacyCash) in [fluentassertions/fluentassertions#1963 - Added `NotCompleteWithinAsync` for Task assertions by [@​lg2de](https://togithub.com/lg2de) in [fluentassertions/fluentassertions#1967 - Added assertions for non-generic `TaskCompletionSource` by [@​lg2de](https://togithub.com/lg2de) in [fluentassertions/fluentassertions#1961 - Exposes the `IMonitor` object to extensions methods. by [@​A-Kjeldgaard](https://togithub.com/A-Kjeldgaard) in [fluentassertions/fluentassertions#2010 ##### Improvements - Optimize `BeEquivalentTo` by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1939 - Print commas at the end of the line by [@​ronaldkroon](https://togithub.com/ronaldkroon) in [fluentassertions/fluentassertions#1945 - Avoid allocating sub-arrays in `ContainInOrder` by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1960 - Extend `IObjectInfo` with info about `DeclaringType` by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [fluentassertions/fluentassertions#1950 - Prepare constructors of `AsyncFunctionAssertions` to make them protected in V7 by [@​lg2de](https://togithub.com/lg2de) in [fluentassertions/fluentassertions#1972 - Calculate the difference between the subject and the expected nearby time by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2013 ##### Fixes - Filter dynamic methods from stack trace by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1943 - Make For/Excluding work with nested paths by [@​whymatter](https://togithub.com/whymatter) in [fluentassertions/fluentassertions#1953 - Use InvariantCulture when doing case-insensitive matches by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1985 - Global record equivalency settings were not taken into account by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [fluentassertions/fluentassertions#1984 - Escape brackets in execution time failures by [@​Briaoeuidhtns](https://togithub.com/Briaoeuidhtns) in [fluentassertions/fluentassertions#1994 ##### Documentation - More specifically clarify the intentions of `WithArgs` by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1929 - Remove building link from the website by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#1934 - Add `Enum.BeOneOf` to the docs by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1958 - Document how to use `ModuleInitializer` by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1966 - Fix a typo on the Assembly References documentation page by [@​asydikov](https://togithub.com/asydikov) in [fluentassertions/fluentassertions#1970 - Update summary of `EquivalencyValidator` by [@​Wolgo](https://togithub.com/Wolgo) in [fluentassertions/fluentassertions#1991 - Improve error messages for accidental `Equals` usage by [@​nycdotnet](https://togithub.com/nycdotnet) in [fluentassertions/fluentassertions#2006 ##### Others - Upgrade to C# 10 by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1935 - Use file scoped namespaces by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1936 - More use of pattern matching and lifted operators by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1937 - Update nuget packages by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1962 - Make it possible for third-party libraries to access the underlying collection of instances of `ReadOnlyNonGenericCollectionWrapper` by [@​logiclrd](https://togithub.com/logiclrd) in [fluentassertions/fluentassertions#1968 - Code cleanups by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1973 - Improve coverage for `CollectionMemberObjectInfo` by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [fluentassertions/fluentassertions#1983 - Deduplicate target frameworks by [@​0xced](https://togithub.com/0xced) in [fluentassertions/fluentassertions#1980 - Removed netcoreapp2.0 framework check in formatting precision tests by [@​iliashkolyar](https://togithub.com/iliashkolyar) in [fluentassertions/fluentassertions#1976 - Rename `ShouldCompareMembersThisDeep` to `ShouldCompareNodesThisDeep` by [@​Wolgo](https://togithub.com/Wolgo) in [fluentassertions/fluentassertions#1992 - Update nuget packages by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1996 - Cleanups by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#1998 - Update GitHub actions by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2007 - Fix the PR link in releases.md by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [fluentassertions/fluentassertions#2014 - Prepare 6.8.0 by [@​jnyrup](https://togithub.com/jnyrup) in [fluentassertions/fluentassertions#2020 #### New Contributors - [@​StacyCash](https://togithub.com/StacyCash) made their first contribution in [fluentassertions/fluentassertions#1963 - [@​asydikov](https://togithub.com/asydikov) made their first contribution in [fluentassertions/fluentassertions#1970 - [@​0xced](https://togithub.com/0xced) made their first contribution in [fluentassertions/fluentassertions#1980 - [@​Wolgo](https://togithub.com/Wolgo) made their first contribution in [fluentassertions/fluentassertions#1991 - [@​Briaoeuidhtns](https://togithub.com/Briaoeuidhtns) made their first contribution in [fluentassertions/fluentassertions#1994 - [@​nycdotnet](https://togithub.com/nycdotnet) made their first contribution in [fluentassertions/fluentassertions#2006 - [@​A-Kjeldgaard](https://togithub.com/A-Kjeldgaard) made their first contribution in [fluentassertions/fluentassertions#2010 **Full Changelog**: fluentassertions/fluentassertions@6.7.0...6.8.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/Testably/Testably.Abstractions). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xMzAuMSIsInVwZGF0ZWRJblZlciI6IjM0LjEzMC4xIn0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [FluentAssertions](https://www.fluentassertions.com/) ([source](https://togithub.com/fluentassertions/fluentassertions)) | nuget | major | `5.10.3` -> `6.10.0` | --- ### Release Notes <details> <summary>fluentassertions/fluentassertions</summary> ### [`v6.10.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.10.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.9.0...6.10.0) <!-- Release notes generated using configuration in .github/release.yml at master --> ##### What's Changed ##### Fixes - Declare `System.Net.Http` as a framework dependency by [@​AArnott](https://togithub.com/AArnott) in [https://github.com/fluentassertions/fluentassertions/pull/2122](https://togithub.com/fluentassertions/fluentassertions/pull/2122) - Improves how `BeEquivalentTo` handles fields hiding base-class fields by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1990](https://togithub.com/fluentassertions/fluentassertions/pull/1990) - Fix timeout check in `WithResult` extension by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/2101](https://togithub.com/fluentassertions/fluentassertions/pull/2101) - Avoid exceptions when wrapping in `AssertionScope` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2103](https://togithub.com/fluentassertions/fluentassertions/pull/2103) ##### Others - Fix copyright year by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/2099](https://togithub.com/fluentassertions/fluentassertions/pull/2099) - Fix broken link in releases.md by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/2096](https://togithub.com/fluentassertions/fluentassertions/pull/2096) - Check if `lcov.info` does exist by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/2097](https://togithub.com/fluentassertions/fluentassertions/pull/2097) - Clean up `Build.cs` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2093](https://togithub.com/fluentassertions/fluentassertions/pull/2093) - Updated editor configs by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/2104](https://togithub.com/fluentassertions/fluentassertions/pull/2104) - Revert early returns for project consistency by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2105](https://togithub.com/fluentassertions/fluentassertions/pull/2105) - Update data.md to fix typo by [@​berserck](https://togithub.com/berserck) in [https://github.com/fluentassertions/fluentassertions/pull/2114](https://togithub.com/fluentassertions/fluentassertions/pull/2114) - Add unit tests for better coverage in Execution namespace by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/2042](https://togithub.com/fluentassertions/fluentassertions/pull/2042) - Add code coverage to XUnit2.Specs by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2115](https://togithub.com/fluentassertions/fluentassertions/pull/2115) - Regrouping and formatting of the selection rule specs by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/2106](https://togithub.com/fluentassertions/fluentassertions/pull/2106) - Add fancy `ReportSummary` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2116](https://togithub.com/fluentassertions/fluentassertions/pull/2116) - Add new issue template for a general feature by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2113](https://togithub.com/fluentassertions/fluentassertions/pull/2113) - Add missing tests for `int.Seconds(TimeSpan)` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2119](https://togithub.com/fluentassertions/fluentassertions/pull/2119) - Add test summaries by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2118](https://togithub.com/fluentassertions/fluentassertions/pull/2118) - Declare few more files as `DocumentationChanges` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2100](https://togithub.com/fluentassertions/fluentassertions/pull/2100) - Remove unused InstallPfx.bat by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2124](https://togithub.com/fluentassertions/fluentassertions/pull/2124) ##### New Contributors - [@​berserck](https://togithub.com/berserck) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2114](https://togithub.com/fluentassertions/fluentassertions/pull/2114) - [@​AArnott](https://togithub.com/AArnott) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2122](https://togithub.com/fluentassertions/fluentassertions/pull/2122) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.9.0...6.10.0 ### [`v6.9.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.9.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.8.0...6.9.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### New features - Added `BeOneOf` for `IComparable`s and object comparisons. by [@​jez9999](https://togithub.com/jez9999) in [https://github.com/fluentassertions/fluentassertions/pull/2028](https://togithub.com/fluentassertions/fluentassertions/pull/2028) - Add `BeCloseTo()` / `NotBeCloseTo()` to TimeOnlyAssertions by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2030](https://togithub.com/fluentassertions/fluentassertions/pull/2030) - Add `ThatAre[Not]Abstract`, `ThatAre[Not]Static` and `ThatAre[Not]Virtual` to `PropertyInfoSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2054](https://togithub.com/fluentassertions/fluentassertions/pull/2054) - Add `ThatAre[Not]Abstract` to `MethodInfoSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2060](https://togithub.com/fluentassertions/fluentassertions/pull/2060) - Add `ThatAre[Not]Abstract` to `TypeSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2058](https://togithub.com/fluentassertions/fluentassertions/pull/2058) - Add `ThatAre[Not]Sealed` to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2059](https://togithub.com/fluentassertions/fluentassertions/pull/2059) - Add `ThatAre[Not]Interfaces` to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2057](https://togithub.com/fluentassertions/fluentassertions/pull/2057) - Add extensions for `OccurrenceConstraint` that reads more fluently by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2047](https://togithub.com/fluentassertions/fluentassertions/pull/2047) - Add `Imply()` to `BooleanAssertions` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2074](https://togithub.com/fluentassertions/fluentassertions/pull/2074) - Add `ThatAre[Not]ValueTypes` method to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2083](https://togithub.com/fluentassertions/fluentassertions/pull/2083) ##### Improvements - Order strings with ordinal comparison by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2075](https://togithub.com/fluentassertions/fluentassertions/pull/2075) - Improve performance of `IsTuple()` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2079](https://togithub.com/fluentassertions/fluentassertions/pull/2079) - Optimize `IsRecord()` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2080](https://togithub.com/fluentassertions/fluentassertions/pull/2080) ##### Fixes - Nested `AssertionScope`s do not print inner scope reportables by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2044](https://togithub.com/fluentassertions/fluentassertions/pull/2044) - Extend `ThatArePublicOrInternal` to also look at the setter of properties by [@​Ruijin92](https://togithub.com/Ruijin92) in [https://github.com/fluentassertions/fluentassertions/pull/2082](https://togithub.com/fluentassertions/fluentassertions/pull/2082) - Treat record structs as records by [@​salvois](https://togithub.com/salvois) in [https://github.com/fluentassertions/fluentassertions/pull/2009](https://togithub.com/fluentassertions/fluentassertions/pull/2009) ##### Documentation - Document alternatives for collection order by [@​nycdotnet](https://togithub.com/nycdotnet) in [https://github.com/fluentassertions/fluentassertions/pull/2063](https://togithub.com/fluentassertions/fluentassertions/pull/2063) - Document that `PathMap` is currently not supported by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2067](https://togithub.com/fluentassertions/fluentassertions/pull/2067) - Use langword instead of <c> for C# keywords by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2070](https://togithub.com/fluentassertions/fluentassertions/pull/2070) - Add missing exceptions to xml summaries by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2023](https://togithub.com/fluentassertions/fluentassertions/pull/2023) - Improve `Guard` helper by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2076](https://togithub.com/fluentassertions/fluentassertions/pull/2076) - Add issue templates and api review process by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2078](https://togithub.com/fluentassertions/fluentassertions/pull/2078) - Add `cSpell` to NUKE build pipeline by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2086](https://togithub.com/fluentassertions/fluentassertions/pull/2086) ##### Others - Enable CI unit tests on linux and mac by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2021](https://togithub.com/fluentassertions/fluentassertions/pull/2021) - update catch phrase url by [@​danielchalmers](https://togithub.com/danielchalmers) in [https://github.com/fluentassertions/fluentassertions/pull/2025](https://togithub.com/fluentassertions/fluentassertions/pull/2025) - Prepare approval tests for .NET 7 by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2024](https://togithub.com/fluentassertions/fluentassertions/pull/2024) - Use PolySharp to generate polyfill attributes by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2026](https://togithub.com/fluentassertions/fluentassertions/pull/2026) - New unit test to verify CompleteWithinAsync behaves correctly in an assertion scope by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/2033](https://togithub.com/fluentassertions/fluentassertions/pull/2033) - Fix nuget config to be able to restore/build the project when having custom HTTP nuget sources by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/2032](https://togithub.com/fluentassertions/fluentassertions/pull/2032) - Improve coverage on data assertions by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/2037](https://togithub.com/fluentassertions/fluentassertions/pull/2037) - Bump minimum SDK to 6.0.400 by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2038](https://togithub.com/fluentassertions/fluentassertions/pull/2038) - Let `EquatableOfInt` implement `IComparable<T>` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2036](https://togithub.com/fluentassertions/fluentassertions/pull/2036) - New tests for better code coverage on collection assertions by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/2035](https://togithub.com/fluentassertions/fluentassertions/pull/2035) - Comparable type assertions referential equality by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2046](https://togithub.com/fluentassertions/fluentassertions/pull/2046) - Use TheoryData by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2068](https://togithub.com/fluentassertions/fluentassertions/pull/2068) - Pattern combinators by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2039](https://togithub.com/fluentassertions/fluentassertions/pull/2039) - Update nugets by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2077](https://togithub.com/fluentassertions/fluentassertions/pull/2077) - Set process dotnet cli language to en-US by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2084](https://togithub.com/fluentassertions/fluentassertions/pull/2084) - Bump required .NET SDK to v7 by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2087](https://togithub.com/fluentassertions/fluentassertions/pull/2087) - Optimize NUKE spell check by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2089](https://togithub.com/fluentassertions/fluentassertions/pull/2089) - Cleanups by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2081](https://togithub.com/fluentassertions/fluentassertions/pull/2081) - Fix build breaking on non PR branches by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2090](https://togithub.com/fluentassertions/fluentassertions/pull/2090) - Add process env variable `DOTNET_CLI_UI_LANGUAGE` also inside targets by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/2092](https://togithub.com/fluentassertions/fluentassertions/pull/2092) #### New Contributors - [@​danielchalmers](https://togithub.com/danielchalmers) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2025](https://togithub.com/fluentassertions/fluentassertions/pull/2025) - [@​jez9999](https://togithub.com/jez9999) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2028](https://togithub.com/fluentassertions/fluentassertions/pull/2028) - [@​94sedighi](https://togithub.com/94sedighi) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2054](https://togithub.com/fluentassertions/fluentassertions/pull/2054) - [@​Ruijin92](https://togithub.com/Ruijin92) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2082](https://togithub.com/fluentassertions/fluentassertions/pull/2082) - [@​salvois](https://togithub.com/salvois) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2009](https://togithub.com/fluentassertions/fluentassertions/pull/2009) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.8.0...6.9.0 ### [`v6.8.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.8.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.7.0...6.8.0) <!-- Release notes generated using configuration in .github/release.yml at develop --> #### What's Changed ##### New features - Extend collection assertions with `ContainInConsecutiveOrder` and `NotContainInConsecutiveOrder` by [@​StacyCash](https://togithub.com/StacyCash) in [https://github.com/fluentassertions/fluentassertions/pull/1963](https://togithub.com/fluentassertions/fluentassertions/pull/1963) - Added `NotCompleteWithinAsync` for Task assertions by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/1967](https://togithub.com/fluentassertions/fluentassertions/pull/1967) - Added assertions for non-generic `TaskCompletionSource` by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/1961](https://togithub.com/fluentassertions/fluentassertions/pull/1961) - Exposes the `IMonitor` object to extensions methods. by [@​A-Kjeldgaard](https://togithub.com/A-Kjeldgaard) in [https://github.com/fluentassertions/fluentassertions/pull/2010](https://togithub.com/fluentassertions/fluentassertions/pull/2010) ##### Improvements - Optimize `BeEquivalentTo` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1939](https://togithub.com/fluentassertions/fluentassertions/pull/1939) - Print commas at the end of the line by [@​ronaldkroon](https://togithub.com/ronaldkroon) in [https://github.com/fluentassertions/fluentassertions/pull/1945](https://togithub.com/fluentassertions/fluentassertions/pull/1945) - Avoid allocating sub-arrays in `ContainInOrder` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1960](https://togithub.com/fluentassertions/fluentassertions/pull/1960) - Extend `IObjectInfo` with info about `DeclaringType` by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1950](https://togithub.com/fluentassertions/fluentassertions/pull/1950) - Prepare constructors of `AsyncFunctionAssertions` to make them protected in V7 by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/1972](https://togithub.com/fluentassertions/fluentassertions/pull/1972) - Calculate the difference between the subject and the expected nearby time by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2013](https://togithub.com/fluentassertions/fluentassertions/pull/2013) ##### Fixes - Filter dynamic methods from stack trace by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1943](https://togithub.com/fluentassertions/fluentassertions/pull/1943) - Make For/Excluding work with nested paths by [@​whymatter](https://togithub.com/whymatter) in [https://github.com/fluentassertions/fluentassertions/pull/1953](https://togithub.com/fluentassertions/fluentassertions/pull/1953) - Use InvariantCulture when doing case-insensitive matches by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1985](https://togithub.com/fluentassertions/fluentassertions/pull/1985) - Global record equivalency settings were not taken into account by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1984](https://togithub.com/fluentassertions/fluentassertions/pull/1984) - Escape brackets in execution time failures by [@​Briaoeuidhtns](https://togithub.com/Briaoeuidhtns) in [https://github.com/fluentassertions/fluentassertions/pull/1994](https://togithub.com/fluentassertions/fluentassertions/pull/1994) ##### Documentation - More specifically clarify the intentions of `WithArgs` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1929](https://togithub.com/fluentassertions/fluentassertions/pull/1929) - Remove building link from the website by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1934](https://togithub.com/fluentassertions/fluentassertions/pull/1934) - Add `Enum.BeOneOf` to the docs by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1958](https://togithub.com/fluentassertions/fluentassertions/pull/1958) - Document how to use `ModuleInitializer` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1966](https://togithub.com/fluentassertions/fluentassertions/pull/1966) - Fix a typo on the Assembly References documentation page by [@​asydikov](https://togithub.com/asydikov) in [https://github.com/fluentassertions/fluentassertions/pull/1970](https://togithub.com/fluentassertions/fluentassertions/pull/1970) - Update summary of `EquivalencyValidator` by [@​Wolgo](https://togithub.com/Wolgo) in [https://github.com/fluentassertions/fluentassertions/pull/1991](https://togithub.com/fluentassertions/fluentassertions/pull/1991) - Improve error messages for accidental `Equals` usage by [@​nycdotnet](https://togithub.com/nycdotnet) in [https://github.com/fluentassertions/fluentassertions/pull/2006](https://togithub.com/fluentassertions/fluentassertions/pull/2006) ##### Others - Upgrade to C# 10 by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1935](https://togithub.com/fluentassertions/fluentassertions/pull/1935) - Use file scoped namespaces by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1936](https://togithub.com/fluentassertions/fluentassertions/pull/1936) - More use of pattern matching and lifted operators by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1937](https://togithub.com/fluentassertions/fluentassertions/pull/1937) - Update nuget packages by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1962](https://togithub.com/fluentassertions/fluentassertions/pull/1962) - Make it possible for third-party libraries to access the underlying collection of instances of `ReadOnlyNonGenericCollectionWrapper` by [@​logiclrd](https://togithub.com/logiclrd) in [https://github.com/fluentassertions/fluentassertions/pull/1968](https://togithub.com/fluentassertions/fluentassertions/pull/1968) - Code cleanups by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1973](https://togithub.com/fluentassertions/fluentassertions/pull/1973) - Improve coverage for `CollectionMemberObjectInfo` by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1983](https://togithub.com/fluentassertions/fluentassertions/pull/1983) - Deduplicate target frameworks by [@​0xced](https://togithub.com/0xced) in [https://github.com/fluentassertions/fluentassertions/pull/1980](https://togithub.com/fluentassertions/fluentassertions/pull/1980) - Removed netcoreapp2.0 framework check in formatting precision tests by [@​iliashkolyar](https://togithub.com/iliashkolyar) in [https://github.com/fluentassertions/fluentassertions/pull/1976](https://togithub.com/fluentassertions/fluentassertions/pull/1976) - Rename `ShouldCompareMembersThisDeep` to `ShouldCompareNodesThisDeep` by [@​Wolgo](https://togithub.com/Wolgo) in [https://github.com/fluentassertions/fluentassertions/pull/1992](https://togithub.com/fluentassertions/fluentassertions/pull/1992) - Update nuget packages by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1996](https://togithub.com/fluentassertions/fluentassertions/pull/1996) - Cleanups by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1998](https://togithub.com/fluentassertions/fluentassertions/pull/1998) - Update GitHub actions by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2007](https://togithub.com/fluentassertions/fluentassertions/pull/2007) - Fix the PR link in releases.md by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2014](https://togithub.com/fluentassertions/fluentassertions/pull/2014) - Prepare 6.8.0 by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2020](https://togithub.com/fluentassertions/fluentassertions/pull/2020) #### New Contributors - [@​StacyCash](https://togithub.com/StacyCash) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1963](https://togithub.com/fluentassertions/fluentassertions/pull/1963) - [@​asydikov](https://togithub.com/asydikov) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1970](https://togithub.com/fluentassertions/fluentassertions/pull/1970) - [@​0xced](https://togithub.com/0xced) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1980](https://togithub.com/fluentassertions/fluentassertions/pull/1980) - [@​Wolgo](https://togithub.com/Wolgo) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1991](https://togithub.com/fluentassertions/fluentassertions/pull/1991) - [@​Briaoeuidhtns](https://togithub.com/Briaoeuidhtns) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1994](https://togithub.com/fluentassertions/fluentassertions/pull/1994) - [@​nycdotnet](https://togithub.com/nycdotnet) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2006](https://togithub.com/fluentassertions/fluentassertions/pull/2006) - [@​A-Kjeldgaard](https://togithub.com/A-Kjeldgaard) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2010](https://togithub.com/fluentassertions/fluentassertions/pull/2010) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.7.0...6.8.0 ### [`v6.7.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.7.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.6.0...6.7.0) <!-- Release notes generated using configuration in .github/release.yml at master --> ##### What's Changed ##### New features - Add `BeDefined` and `NotBeDefined` to `EnumAssertions` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1888](https://togithub.com/fluentassertions/fluentassertions/pull/1888) - Restore basic assertions for collections in `System.Data` by [@​logiclrd](https://togithub.com/logiclrd) in [https://github.com/fluentassertions/fluentassertions/pull/1812](https://togithub.com/fluentassertions/fluentassertions/pull/1812) - Add the ability to exclude non-browsable members from equivalency tests by [@​logiclrd](https://togithub.com/logiclrd) in [https://github.com/fluentassertions/fluentassertions/pull/1827](https://togithub.com/fluentassertions/fluentassertions/pull/1827) - Add `For`/`Exclude` to allow exclusion of members inside a collection by [@​whymatter](https://togithub.com/whymatter) in [https://github.com/fluentassertions/fluentassertions/pull/1782](https://togithub.com/fluentassertions/fluentassertions/pull/1782) - Add overload to `HaveElement()` to be able to assert on occurrences for `XDocument` and `XElement` by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1880](https://togithub.com/fluentassertions/fluentassertions/pull/1880) ##### Fixes - Do not add all arguments of type `T` to the matching events, if one is found by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1920](https://togithub.com/fluentassertions/fluentassertions/pull/1920) ##### Documentation - Update documentation for event monitoring at .netstandard2.0 by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1879](https://togithub.com/fluentassertions/fluentassertions/pull/1879) - Update docxml comments on `BeInRange` by [@​andrewlock](https://togithub.com/andrewlock) in [https://github.com/fluentassertions/fluentassertions/pull/1907](https://togithub.com/fluentassertions/fluentassertions/pull/1907) - Add ContainSingle.Where to collection examples by [@​timabell](https://togithub.com/timabell) in [https://github.com/fluentassertions/fluentassertions/pull/1917](https://togithub.com/fluentassertions/fluentassertions/pull/1917) ##### Others - More code coverage by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1871](https://togithub.com/fluentassertions/fluentassertions/pull/1871) - Code style fixes by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1881](https://togithub.com/fluentassertions/fluentassertions/pull/1881) - Add missing tests (according to coveralls) for Data\* objects by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1882](https://togithub.com/fluentassertions/fluentassertions/pull/1882) - Fix small typo in `AssertionScope` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1890](https://togithub.com/fluentassertions/fluentassertions/pull/1890) - Add missing tests for matching `null` with a wildcard by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1889](https://togithub.com/fluentassertions/fluentassertions/pull/1889) - More testing of guarding methods by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1891](https://togithub.com/fluentassertions/fluentassertions/pull/1891) - Fix release notes by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1892](https://togithub.com/fluentassertions/fluentassertions/pull/1892) - Structure assertions with nested classes instead of regions (Part 1) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1898](https://togithub.com/fluentassertions/fluentassertions/pull/1898) - Add missing `null` check tests in Data\*Specs by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1899](https://togithub.com/fluentassertions/fluentassertions/pull/1899) - Structure assertions with nested classes instead of regions (Part 2) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1900](https://togithub.com/fluentassertions/fluentassertions/pull/1900) - Update nugets by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1901](https://togithub.com/fluentassertions/fluentassertions/pull/1901) - Cleanup README.md by [@​robvanuden](https://togithub.com/robvanuden) in [https://github.com/fluentassertions/fluentassertions/pull/1905](https://togithub.com/fluentassertions/fluentassertions/pull/1905) - Structure assertions with nested classes instead of regions (Part 3) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1903](https://togithub.com/fluentassertions/fluentassertions/pull/1903) - Try to stabilize UIFact tests by running them sequentially by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1902](https://togithub.com/fluentassertions/fluentassertions/pull/1902) - Structure assertions with nested classes instead of regions (Part 4) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1908](https://togithub.com/fluentassertions/fluentassertions/pull/1908) - Structure assertions with nested classes instead of regions (Part 5) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1909](https://togithub.com/fluentassertions/fluentassertions/pull/1909) - Fix coveralls badge by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1906](https://togithub.com/fluentassertions/fluentassertions/pull/1906) - Fix codestyle issues by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1912](https://togithub.com/fluentassertions/fluentassertions/pull/1912) - Structure assertions with nested classes instead of regions (Part 6) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1911](https://togithub.com/fluentassertions/fluentassertions/pull/1911) - Fix the failure message for occurrence regex by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1913](https://togithub.com/fluentassertions/fluentassertions/pull/1913) ##### New Contributors - [@​ITaluone](https://togithub.com/ITaluone) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1871](https://togithub.com/fluentassertions/fluentassertions/pull/1871) - [@​whymatter](https://togithub.com/whymatter) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1782](https://togithub.com/fluentassertions/fluentassertions/pull/1782) - [@​andrewlock](https://togithub.com/andrewlock) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1907](https://togithub.com/fluentassertions/fluentassertions/pull/1907) - [@​timabell](https://togithub.com/timabell) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1917](https://togithub.com/fluentassertions/fluentassertions/pull/1917) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.6.0...6.7.0 ### [`v6.6.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.6.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.5.1...6.6.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### New features - Adding support for .NET6 `DateOnly` struct by [@​iliashkolyar](https://togithub.com/iliashkolyar) in [https://github.com/fluentassertions/fluentassertions/pull/1844](https://togithub.com/fluentassertions/fluentassertions/pull/1844) - Adding support for .NET6 `TimeOnly` struct by [@​iliashkolyar](https://togithub.com/iliashkolyar) in [https://github.com/fluentassertions/fluentassertions/pull/1848](https://togithub.com/fluentassertions/fluentassertions/pull/1848) - Extend `NullableBooleanAssertions` by `NotBe()` by [@​mu88](https://togithub.com/mu88) in [https://github.com/fluentassertions/fluentassertions/pull/1865](https://togithub.com/fluentassertions/fluentassertions/pull/1865) - Added a new overload to `MatchRegex()` to assert on the number of regex matches by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1869](https://togithub.com/fluentassertions/fluentassertions/pull/1869) ##### Improvements - Annotated `[Not]MatchRegex` with `[StringSyntax("Regex")]` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1816](https://togithub.com/fluentassertions/fluentassertions/pull/1816) - Determine caller name for `EnumAssertions.Be` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1835](https://togithub.com/fluentassertions/fluentassertions/pull/1835) - Add difference to numeric assertion failure messages by [@​iliashkolyar](https://togithub.com/iliashkolyar) in [https://github.com/fluentassertions/fluentassertions/pull/1859](https://togithub.com/fluentassertions/fluentassertions/pull/1859) - Improve difference calculation of overflowing integrals by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1875](https://togithub.com/fluentassertions/fluentassertions/pull/1875) ##### Fixes - Ensure `ExcludingMissingMembers` doesn't undo usage of `WithMapping` by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1838](https://togithub.com/fluentassertions/fluentassertions/pull/1838) - Better support for NaN in numeric assertions on floats and doubles by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1822](https://togithub.com/fluentassertions/fluentassertions/pull/1822) - `WithMapping` now works in equivalency assertions on collections by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1858](https://togithub.com/fluentassertions/fluentassertions/pull/1858) - Better handling of NaN in nullable numeric assertions by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1867](https://togithub.com/fluentassertions/fluentassertions/pull/1867) ##### Documentation - Fix typo in comment for `ComparingRecordsByMembers` by [@​kijanawoodard](https://togithub.com/kijanawoodard) in [https://github.com/fluentassertions/fluentassertions/pull/1809](https://togithub.com/fluentassertions/fluentassertions/pull/1809) - Add release notes template by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1818](https://togithub.com/fluentassertions/fluentassertions/pull/1818) - Update migration tip on how to replace `AllItemsAreInstancesOfType` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1873](https://togithub.com/fluentassertions/fluentassertions/pull/1873) ##### Others - Add code coverage reporting by [@​eNeRGy164](https://togithub.com/eNeRGy164) in [https://github.com/fluentassertions/fluentassertions/pull/1815](https://togithub.com/fluentassertions/fluentassertions/pull/1815) - Fix uninvoked actions in tests by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1817](https://togithub.com/fluentassertions/fluentassertions/pull/1817) - Update nuget packages by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1819](https://togithub.com/fluentassertions/fluentassertions/pull/1819) - More Code Coverage by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1820](https://togithub.com/fluentassertions/fluentassertions/pull/1820) - Reordered the numeric tests and replaced regions with nested classes by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1821](https://togithub.com/fluentassertions/fluentassertions/pull/1821) - Fill gaps in System.Data unit testing by [@​logiclrd](https://togithub.com/logiclrd) in [https://github.com/fluentassertions/fluentassertions/pull/1814](https://togithub.com/fluentassertions/fluentassertions/pull/1814) - Add net6.0 target by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1831](https://togithub.com/fluentassertions/fluentassertions/pull/1831) - Target PRs at develop instead of master by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1836](https://togithub.com/fluentassertions/fluentassertions/pull/1836) - Adds test for string collection equivalency by [@​chvollm](https://togithub.com/chvollm) in [https://github.com/fluentassertions/fluentassertions/pull/1843](https://togithub.com/fluentassertions/fluentassertions/pull/1843) - Replaced regions in numeric specs with nested classes by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1837](https://togithub.com/fluentassertions/fluentassertions/pull/1837) - Rename constructor parameter for `NullableDateOnlyAssertions` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1846](https://togithub.com/fluentassertions/fluentassertions/pull/1846) - Improve code coverage of fake should overloads by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1847](https://togithub.com/fluentassertions/fluentassertions/pull/1847) - Improve code coverage and fix some test mutations by [@​eNeRGy164](https://togithub.com/eNeRGy164) in [https://github.com/fluentassertions/fluentassertions/pull/1839](https://togithub.com/fluentassertions/fluentassertions/pull/1839) - Removes unnecessary code by [@​chvollm](https://togithub.com/chvollm) in [https://github.com/fluentassertions/fluentassertions/pull/1849](https://togithub.com/fluentassertions/fluentassertions/pull/1849) - `A_NaN_is_never_in_range_of_two_doubles` was exercising `float`s by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1852](https://togithub.com/fluentassertions/fluentassertions/pull/1852) - Split `StringAssertionSpecs` file by [@​eNeRGy164](https://togithub.com/eNeRGy164) in [https://github.com/fluentassertions/fluentassertions/pull/1855](https://togithub.com/fluentassertions/fluentassertions/pull/1855) - Update internal test and build nuget packages by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1866](https://togithub.com/fluentassertions/fluentassertions/pull/1866) - Add test coverage for `OccurrenceConstraint` by [@​eNeRGy164](https://togithub.com/eNeRGy164) in [https://github.com/fluentassertions/fluentassertions/pull/1856](https://togithub.com/fluentassertions/fluentassertions/pull/1856) - Fix Some Typos in UpgradingToV6.md by [@​say25](https://togithub.com/say25) in [https://github.com/fluentassertions/fluentassertions/pull/1870](https://togithub.com/fluentassertions/fluentassertions/pull/1870) - Cleanups in Specs by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1853](https://togithub.com/fluentassertions/fluentassertions/pull/1853) #### New Contributors - [@​kijanawoodard](https://togithub.com/kijanawoodard) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1809](https://togithub.com/fluentassertions/fluentassertions/pull/1809) - [@​say25](https://togithub.com/say25) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1870](https://togithub.com/fluentassertions/fluentassertions/pull/1870) - [@​IT-VBFK](https://togithub.com/IT-VBFK) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1869](https://togithub.com/fluentassertions/fluentassertions/pull/1869) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.5.1...6.6.0 ### [`v6.5.1`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.5.1) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.5.0...6.5.1) #### What's Changed - Maintenance on release notes, Github content files, etc by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1800](https://togithub.com/fluentassertions/fluentassertions/pull/1800) - Make the site work with Ruby 3 and update catchphrase and sponsors by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1801](https://togithub.com/fluentassertions/fluentassertions/pull/1801) - Fix ordering collections by the identity function by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1802](https://togithub.com/fluentassertions/fluentassertions/pull/1802) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.5.0...6.5.1 Public release notes: https://fluentassertions.com/releases/[#​651](https://togithub.com/fluentassertions/fluentassertions/issues/651) ### [`v6.5.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.5.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.4.0...6.5.0) #### What's Changed - Allow mapping properties and/or fields with different names by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1742](https://togithub.com/fluentassertions/fluentassertions/pull/1742) - Moved the equivalency specs to a separate test project and split them into separate classes by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1789](https://togithub.com/fluentassertions/fluentassertions/pull/1789) - Improved docs on `BeLowerCased` and `BeUpperCased` for mixed strings by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1792](https://togithub.com/fluentassertions/fluentassertions/pull/1792) - Fixed a continuation issue in the fluent assertion API by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1791](https://togithub.com/fluentassertions/fluentassertions/pull/1791) - Properly recognized non-class types as internal when using `HaveAccessModifier` assertion by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1793](https://togithub.com/fluentassertions/fluentassertions/pull/1793) - Caller identification does not handle all arguments using `new` by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1794](https://togithub.com/fluentassertions/fluentassertions/pull/1794) - Added `AllSatisfy` by [@​kmusick](https://togithub.com/kmusick) in [https://github.com/fluentassertions/fluentassertions/pull/1790](https://togithub.com/fluentassertions/fluentassertions/pull/1790) - Fix and improve tracing for nested `AssertionScope`s by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1797](https://togithub.com/fluentassertions/fluentassertions/pull/1797) #### New Contributors - [@​kmusick](https://togithub.com/kmusick) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1790](https://togithub.com/fluentassertions/fluentassertions/pull/1790) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.4.0...6.5.0 ### [`v6.4.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.4.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.3.0...6.4.0) #### What's Changed - Adds `ThatAreStatic` and `ThatAreNotStatic` to `MethodInfoSelector` by [@​chvollm](https://togithub.com/chvollm) in [https://github.com/fluentassertions/fluentassertions/pull/1740](https://togithub.com/fluentassertions/fluentassertions/pull/1740) - Trailing slash results in 404 page by [@​MEmanuelsson](https://togithub.com/MEmanuelsson) in [https://github.com/fluentassertions/fluentassertions/pull/1767](https://togithub.com/fluentassertions/fluentassertions/pull/1767) - Introduce assertions for `StatusCode` of `HttpResponseMessage` by [@​mu88](https://togithub.com/mu88) for [@​swisspost](https://togithub.com/swisspost) in [https://github.com/fluentassertions/fluentassertions/pull/1737](https://togithub.com/fluentassertions/fluentassertions/pull/1737) - `ContainItemsAssignableTo` now expects at least one item assignable to `T` by [@​MullerWasHere](https://togithub.com/MullerWasHere) in [https://github.com/fluentassertions/fluentassertions/pull/1765](https://togithub.com/fluentassertions/fluentassertions/pull/1765) - Variable name is not captured after await assertion by [@​MullerWasHere](https://togithub.com/MullerWasHere) in [https://github.com/fluentassertions/fluentassertions/pull/1770](https://togithub.com/fluentassertions/fluentassertions/pull/1770) - Fix typos by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1774](https://togithub.com/fluentassertions/fluentassertions/pull/1774) - Non-generic overload for `WithInnerExceptionExactly` by [@​karenfarnes](https://togithub.com/karenfarnes) in [https://github.com/fluentassertions/fluentassertions/pull/1769](https://togithub.com/fluentassertions/fluentassertions/pull/1769) - Fix determining caller identity for NET Native by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1776](https://togithub.com/fluentassertions/fluentassertions/pull/1776) - Adjust Identifier properties by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1777](https://togithub.com/fluentassertions/fluentassertions/pull/1777) - Relax `When_the_execution_time_of_an_async_action_is_less_than_a_limit_it_should_not_throw` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1778](https://togithub.com/fluentassertions/fluentassertions/pull/1778) - Bump Nuke/GitVersion, improve PR numbering, simplify Yaml script by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1775](https://togithub.com/fluentassertions/fluentassertions/pull/1775) - `OccurredEvent` ordering on monitored object is now done via thread-safe counter by [@​MullerWasHere](https://togithub.com/MullerWasHere) in [https://github.com/fluentassertions/fluentassertions/pull/1773](https://togithub.com/fluentassertions/fluentassertions/pull/1773) - override Identifier for `BufferedStream` by [@​amosonn](https://togithub.com/amosonn) in [https://github.com/fluentassertions/fluentassertions/pull/1772](https://togithub.com/fluentassertions/fluentassertions/pull/1772) - Fix `TryGetValue` for dictionary like enumerables by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1786](https://togithub.com/fluentassertions/fluentassertions/pull/1786) - Optimize build times by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1787](https://togithub.com/fluentassertions/fluentassertions/pull/1787) - Guard against unformattable caller name by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1788](https://togithub.com/fluentassertions/fluentassertions/pull/1788) #### New Contributors - [@​MEmanuelsson](https://togithub.com/MEmanuelsson) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1767](https://togithub.com/fluentassertions/fluentassertions/pull/1767) - [@​MullerWasHere](https://togithub.com/MullerWasHere) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1765](https://togithub.com/fluentassertions/fluentassertions/pull/1765) - [@​karenfarnes](https://togithub.com/karenfarnes) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1769](https://togithub.com/fluentassertions/fluentassertions/pull/1769) - [@​amosonn](https://togithub.com/amosonn) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1772](https://togithub.com/fluentassertions/fluentassertions/pull/1772) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.3.0...6.4.0 **Public release notes**: https://fluentassertions.com/releases/[#​640](https://togithub.com/fluentassertions/fluentassertions/issues/640) ### [`v6.3.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.3.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.2.0...6.3.0) #### What's Changed - Fix building on linux/WSL by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1723](https://togithub.com/fluentassertions/fluentassertions/pull/1723) - Test that `ComparingByMembers` clears `equalityStrategyCache` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1724](https://togithub.com/fluentassertions/fluentassertions/pull/1724) - Adding `ThatAreAsync()` and `ThatAreNotAsync()` to `MethodInfoSelector` by [@​chvollm](https://togithub.com/chvollm) in [https://github.com/fluentassertions/fluentassertions/pull/1725](https://togithub.com/fluentassertions/fluentassertions/pull/1725) - Return Task for async/non-async test method by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1736](https://togithub.com/fluentassertions/fluentassertions/pull/1736) - Fix contributing guidelines by [@​wgnf](https://togithub.com/wgnf) in [https://github.com/fluentassertions/fluentassertions/pull/1739](https://togithub.com/fluentassertions/fluentassertions/pull/1739) - Replace non-generic collection examples with generic collections in documentation by [@​jonathonchase](https://togithub.com/jonathonchase) in [https://github.com/fluentassertions/fluentassertions/pull/1745](https://togithub.com/fluentassertions/fluentassertions/pull/1745) - Adds ThatAre(Not)Virtual to MethodInfoSelector by [@​chvollm](https://togithub.com/chvollm) in [https://github.com/fluentassertions/fluentassertions/pull/1744](https://togithub.com/fluentassertions/fluentassertions/pull/1744) - Prevent multiple enumeration in `ContainSingle()` by [@​bert2](https://togithub.com/bert2) in [https://github.com/fluentassertions/fluentassertions/pull/1753](https://togithub.com/fluentassertions/fluentassertions/pull/1753) - Change HaveCount assertion message order to state number before dumpi… by [@​iliashkolyar](https://togithub.com/iliashkolyar) in [https://github.com/fluentassertions/fluentassertions/pull/1760](https://togithub.com/fluentassertions/fluentassertions/pull/1760) - Throw exception when calling object.Equals on Assertions class by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1764](https://togithub.com/fluentassertions/fluentassertions/pull/1764) - Take sync work into account in CompleteWithinAsync by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1762](https://togithub.com/fluentassertions/fluentassertions/pull/1762) #### New Contributors - [@​wgnf](https://togithub.com/wgnf) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1739](https://togithub.com/fluentassertions/fluentassertions/pull/1739) - [@​jonathonchase](https://togithub.com/jonathonchase) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1745](https://togithub.com/fluentassertions/fluentassertions/pull/1745) - [@​bert2](https://togithub.com/bert2) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1753](https://togithub.com/fluentassertions/fluentassertions/pull/1753) - [@​iliashkolyar](https://togithub.com/iliashkolyar) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1760](https://togithub.com/fluentassertions/fluentassertions/pull/1760) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.2.0...6.3.0 ### [`v6.2.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.2.0) [Compa </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/cythral/brighid-commands). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4zNC4xIiwidXBkYXRlZEluVmVyIjoiMzUuMzQuMSJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [FluentAssertions](https://www.fluentassertions.com/) ([source](https://togithub.com/fluentassertions/fluentassertions)) | nuget | major | `5.10.3` -> `6.10.0` | --- ### Release Notes <details> <summary>fluentassertions/fluentassertions</summary> ### [`v6.10.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.10.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.9.0...6.10.0) <!-- Release notes generated using configuration in .github/release.yml at master --> ##### What's Changed ##### Fixes - Declare `System.Net.Http` as a framework dependency by [@​AArnott](https://togithub.com/AArnott) in [https://github.com/fluentassertions/fluentassertions/pull/2122](https://togithub.com/fluentassertions/fluentassertions/pull/2122) - Improves how `BeEquivalentTo` handles fields hiding base-class fields by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1990](https://togithub.com/fluentassertions/fluentassertions/pull/1990) - Fix timeout check in `WithResult` extension by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/2101](https://togithub.com/fluentassertions/fluentassertions/pull/2101) - Avoid exceptions when wrapping in `AssertionScope` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2103](https://togithub.com/fluentassertions/fluentassertions/pull/2103) ##### Others - Fix copyright year by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/2099](https://togithub.com/fluentassertions/fluentassertions/pull/2099) - Fix broken link in releases.md by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/2096](https://togithub.com/fluentassertions/fluentassertions/pull/2096) - Check if `lcov.info` does exist by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/2097](https://togithub.com/fluentassertions/fluentassertions/pull/2097) - Clean up `Build.cs` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2093](https://togithub.com/fluentassertions/fluentassertions/pull/2093) - Updated editor configs by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/2104](https://togithub.com/fluentassertions/fluentassertions/pull/2104) - Revert early returns for project consistency by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2105](https://togithub.com/fluentassertions/fluentassertions/pull/2105) - Update data.md to fix typo by [@​berserck](https://togithub.com/berserck) in [https://github.com/fluentassertions/fluentassertions/pull/2114](https://togithub.com/fluentassertions/fluentassertions/pull/2114) - Add unit tests for better coverage in Execution namespace by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/2042](https://togithub.com/fluentassertions/fluentassertions/pull/2042) - Add code coverage to XUnit2.Specs by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2115](https://togithub.com/fluentassertions/fluentassertions/pull/2115) - Regrouping and formatting of the selection rule specs by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/2106](https://togithub.com/fluentassertions/fluentassertions/pull/2106) - Add fancy `ReportSummary` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2116](https://togithub.com/fluentassertions/fluentassertions/pull/2116) - Add new issue template for a general feature by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2113](https://togithub.com/fluentassertions/fluentassertions/pull/2113) - Add missing tests for `int.Seconds(TimeSpan)` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2119](https://togithub.com/fluentassertions/fluentassertions/pull/2119) - Add test summaries by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2118](https://togithub.com/fluentassertions/fluentassertions/pull/2118) - Declare few more files as `DocumentationChanges` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2100](https://togithub.com/fluentassertions/fluentassertions/pull/2100) - Remove unused InstallPfx.bat by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2124](https://togithub.com/fluentassertions/fluentassertions/pull/2124) ##### New Contributors - [@​berserck](https://togithub.com/berserck) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2114](https://togithub.com/fluentassertions/fluentassertions/pull/2114) - [@​AArnott](https://togithub.com/AArnott) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2122](https://togithub.com/fluentassertions/fluentassertions/pull/2122) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.9.0...6.10.0 ### [`v6.9.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.9.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.8.0...6.9.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### New features - Added `BeOneOf` for `IComparable`s and object comparisons. by [@​jez9999](https://togithub.com/jez9999) in [https://github.com/fluentassertions/fluentassertions/pull/2028](https://togithub.com/fluentassertions/fluentassertions/pull/2028) - Add `BeCloseTo()` / `NotBeCloseTo()` to TimeOnlyAssertions by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2030](https://togithub.com/fluentassertions/fluentassertions/pull/2030) - Add `ThatAre[Not]Abstract`, `ThatAre[Not]Static` and `ThatAre[Not]Virtual` to `PropertyInfoSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2054](https://togithub.com/fluentassertions/fluentassertions/pull/2054) - Add `ThatAre[Not]Abstract` to `MethodInfoSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2060](https://togithub.com/fluentassertions/fluentassertions/pull/2060) - Add `ThatAre[Not]Abstract` to `TypeSelector` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2058](https://togithub.com/fluentassertions/fluentassertions/pull/2058) - Add `ThatAre[Not]Sealed` to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2059](https://togithub.com/fluentassertions/fluentassertions/pull/2059) - Add `ThatAre[Not]Interfaces` to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2057](https://togithub.com/fluentassertions/fluentassertions/pull/2057) - Add extensions for `OccurrenceConstraint` that reads more fluently by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2047](https://togithub.com/fluentassertions/fluentassertions/pull/2047) - Add `Imply()` to `BooleanAssertions` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2074](https://togithub.com/fluentassertions/fluentassertions/pull/2074) - Add `ThatAre[Not]ValueTypes` method to `TypeSelector.cs` by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2083](https://togithub.com/fluentassertions/fluentassertions/pull/2083) ##### Improvements - Order strings with ordinal comparison by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2075](https://togithub.com/fluentassertions/fluentassertions/pull/2075) - Improve performance of `IsTuple()` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2079](https://togithub.com/fluentassertions/fluentassertions/pull/2079) - Optimize `IsRecord()` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2080](https://togithub.com/fluentassertions/fluentassertions/pull/2080) ##### Fixes - Nested `AssertionScope`s do not print inner scope reportables by [@​94sedighi](https://togithub.com/94sedighi) in [https://github.com/fluentassertions/fluentassertions/pull/2044](https://togithub.com/fluentassertions/fluentassertions/pull/2044) - Extend `ThatArePublicOrInternal` to also look at the setter of properties by [@​Ruijin92](https://togithub.com/Ruijin92) in [https://github.com/fluentassertions/fluentassertions/pull/2082](https://togithub.com/fluentassertions/fluentassertions/pull/2082) - Treat record structs as records by [@​salvois](https://togithub.com/salvois) in [https://github.com/fluentassertions/fluentassertions/pull/2009](https://togithub.com/fluentassertions/fluentassertions/pull/2009) ##### Documentation - Document alternatives for collection order by [@​nycdotnet](https://togithub.com/nycdotnet) in [https://github.com/fluentassertions/fluentassertions/pull/2063](https://togithub.com/fluentassertions/fluentassertions/pull/2063) - Document that `PathMap` is currently not supported by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2067](https://togithub.com/fluentassertions/fluentassertions/pull/2067) - Use langword instead of <c> for C# keywords by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2070](https://togithub.com/fluentassertions/fluentassertions/pull/2070) - Add missing exceptions to xml summaries by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2023](https://togithub.com/fluentassertions/fluentassertions/pull/2023) - Improve `Guard` helper by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2076](https://togithub.com/fluentassertions/fluentassertions/pull/2076) - Add issue templates and api review process by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2078](https://togithub.com/fluentassertions/fluentassertions/pull/2078) - Add `cSpell` to NUKE build pipeline by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2086](https://togithub.com/fluentassertions/fluentassertions/pull/2086) ##### Others - Enable CI unit tests on linux and mac by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2021](https://togithub.com/fluentassertions/fluentassertions/pull/2021) - update catch phrase url by [@​danielchalmers](https://togithub.com/danielchalmers) in [https://github.com/fluentassertions/fluentassertions/pull/2025](https://togithub.com/fluentassertions/fluentassertions/pull/2025) - Prepare approval tests for .NET 7 by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2024](https://togithub.com/fluentassertions/fluentassertions/pull/2024) - Use PolySharp to generate polyfill attributes by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2026](https://togithub.com/fluentassertions/fluentassertions/pull/2026) - New unit test to verify CompleteWithinAsync behaves correctly in an assertion scope by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/2033](https://togithub.com/fluentassertions/fluentassertions/pull/2033) - Fix nuget config to be able to restore/build the project when having custom HTTP nuget sources by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/2032](https://togithub.com/fluentassertions/fluentassertions/pull/2032) - Improve coverage on data assertions by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/2037](https://togithub.com/fluentassertions/fluentassertions/pull/2037) - Bump minimum SDK to 6.0.400 by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2038](https://togithub.com/fluentassertions/fluentassertions/pull/2038) - Let `EquatableOfInt` implement `IComparable<T>` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2036](https://togithub.com/fluentassertions/fluentassertions/pull/2036) - New tests for better code coverage on collection assertions by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/2035](https://togithub.com/fluentassertions/fluentassertions/pull/2035) - Comparable type assertions referential equality by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2046](https://togithub.com/fluentassertions/fluentassertions/pull/2046) - Use TheoryData by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2068](https://togithub.com/fluentassertions/fluentassertions/pull/2068) - Pattern combinators by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2039](https://togithub.com/fluentassertions/fluentassertions/pull/2039) - Update nugets by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2077](https://togithub.com/fluentassertions/fluentassertions/pull/2077) - Set process dotnet cli language to en-US by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2084](https://togithub.com/fluentassertions/fluentassertions/pull/2084) - Bump required .NET SDK to v7 by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2087](https://togithub.com/fluentassertions/fluentassertions/pull/2087) - Optimize NUKE spell check by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2089](https://togithub.com/fluentassertions/fluentassertions/pull/2089) - Cleanups by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2081](https://togithub.com/fluentassertions/fluentassertions/pull/2081) - Fix build breaking on non PR branches by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2090](https://togithub.com/fluentassertions/fluentassertions/pull/2090) - Add process env variable `DOTNET_CLI_UI_LANGUAGE` also inside targets by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/2092](https://togithub.com/fluentassertions/fluentassertions/pull/2092) #### New Contributors - [@​danielchalmers](https://togithub.com/danielchalmers) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2025](https://togithub.com/fluentassertions/fluentassertions/pull/2025) - [@​jez9999](https://togithub.com/jez9999) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2028](https://togithub.com/fluentassertions/fluentassertions/pull/2028) - [@​94sedighi](https://togithub.com/94sedighi) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2054](https://togithub.com/fluentassertions/fluentassertions/pull/2054) - [@​Ruijin92](https://togithub.com/Ruijin92) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2082](https://togithub.com/fluentassertions/fluentassertions/pull/2082) - [@​salvois](https://togithub.com/salvois) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2009](https://togithub.com/fluentassertions/fluentassertions/pull/2009) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.8.0...6.9.0 ### [`v6.8.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.8.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.7.0...6.8.0) <!-- Release notes generated using configuration in .github/release.yml at develop --> ##### What's Changed ##### New features - Extend collection assertions with `ContainInConsecutiveOrder` and `NotContainInConsecutiveOrder` by [@​StacyCash](https://togithub.com/StacyCash) in [https://github.com/fluentassertions/fluentassertions/pull/1963](https://togithub.com/fluentassertions/fluentassertions/pull/1963) - Added `NotCompleteWithinAsync` for Task assertions by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/1967](https://togithub.com/fluentassertions/fluentassertions/pull/1967) - Added assertions for non-generic `TaskCompletionSource` by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/1961](https://togithub.com/fluentassertions/fluentassertions/pull/1961) - Exposes the `IMonitor` object to extensions methods. by [@​A-Kjeldgaard](https://togithub.com/A-Kjeldgaard) in [https://github.com/fluentassertions/fluentassertions/pull/2010](https://togithub.com/fluentassertions/fluentassertions/pull/2010) ##### Improvements - Optimize `BeEquivalentTo` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1939](https://togithub.com/fluentassertions/fluentassertions/pull/1939) - Print commas at the end of the line by [@​ronaldkroon](https://togithub.com/ronaldkroon) in [https://github.com/fluentassertions/fluentassertions/pull/1945](https://togithub.com/fluentassertions/fluentassertions/pull/1945) - Avoid allocating sub-arrays in `ContainInOrder` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1960](https://togithub.com/fluentassertions/fluentassertions/pull/1960) - Extend `IObjectInfo` with info about `DeclaringType` by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1950](https://togithub.com/fluentassertions/fluentassertions/pull/1950) - Prepare constructors of `AsyncFunctionAssertions` to make them protected in V7 by [@​lg2de](https://togithub.com/lg2de) in [https://github.com/fluentassertions/fluentassertions/pull/1972](https://togithub.com/fluentassertions/fluentassertions/pull/1972) - Calculate the difference between the subject and the expected nearby time by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2013](https://togithub.com/fluentassertions/fluentassertions/pull/2013) ##### Fixes - Filter dynamic methods from stack trace by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1943](https://togithub.com/fluentassertions/fluentassertions/pull/1943) - Make For/Excluding work with nested paths by [@​whymatter](https://togithub.com/whymatter) in [https://github.com/fluentassertions/fluentassertions/pull/1953](https://togithub.com/fluentassertions/fluentassertions/pull/1953) - Use InvariantCulture when doing case-insensitive matches by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1985](https://togithub.com/fluentassertions/fluentassertions/pull/1985) - Global record equivalency settings were not taken into account by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1984](https://togithub.com/fluentassertions/fluentassertions/pull/1984) - Escape brackets in execution time failures by [@​Briaoeuidhtns](https://togithub.com/Briaoeuidhtns) in [https://github.com/fluentassertions/fluentassertions/pull/1994](https://togithub.com/fluentassertions/fluentassertions/pull/1994) ##### Documentation - More specifically clarify the intentions of `WithArgs` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1929](https://togithub.com/fluentassertions/fluentassertions/pull/1929) - Remove building link from the website by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1934](https://togithub.com/fluentassertions/fluentassertions/pull/1934) - Add `Enum.BeOneOf` to the docs by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1958](https://togithub.com/fluentassertions/fluentassertions/pull/1958) - Document how to use `ModuleInitializer` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1966](https://togithub.com/fluentassertions/fluentassertions/pull/1966) - Fix a typo on the Assembly References documentation page by [@​asydikov](https://togithub.com/asydikov) in [https://github.com/fluentassertions/fluentassertions/pull/1970](https://togithub.com/fluentassertions/fluentassertions/pull/1970) - Update summary of `EquivalencyValidator` by [@​Wolgo](https://togithub.com/Wolgo) in [https://github.com/fluentassertions/fluentassertions/pull/1991](https://togithub.com/fluentassertions/fluentassertions/pull/1991) - Improve error messages for accidental `Equals` usage by [@​nycdotnet](https://togithub.com/nycdotnet) in [https://github.com/fluentassertions/fluentassertions/pull/2006](https://togithub.com/fluentassertions/fluentassertions/pull/2006) ##### Others - Upgrade to C# 10 by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1935](https://togithub.com/fluentassertions/fluentassertions/pull/1935) - Use file scoped namespaces by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1936](https://togithub.com/fluentassertions/fluentassertions/pull/1936) - More use of pattern matching and lifted operators by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1937](https://togithub.com/fluentassertions/fluentassertions/pull/1937) - Update nuget packages by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1962](https://togithub.com/fluentassertions/fluentassertions/pull/1962) - Make it possible for third-party libraries to access the underlying collection of instances of `ReadOnlyNonGenericCollectionWrapper` by [@​logiclrd](https://togithub.com/logiclrd) in [https://github.com/fluentassertions/fluentassertions/pull/1968](https://togithub.com/fluentassertions/fluentassertions/pull/1968) - Code cleanups by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1973](https://togithub.com/fluentassertions/fluentassertions/pull/1973) - Improve coverage for `CollectionMemberObjectInfo` by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1983](https://togithub.com/fluentassertions/fluentassertions/pull/1983) - Deduplicate target frameworks by [@​0xced](https://togithub.com/0xced) in [https://github.com/fluentassertions/fluentassertions/pull/1980](https://togithub.com/fluentassertions/fluentassertions/pull/1980) - Removed netcoreapp2.0 framework check in formatting precision tests by [@​iliashkolyar](https://togithub.com/iliashkolyar) in [https://github.com/fluentassertions/fluentassertions/pull/1976](https://togithub.com/fluentassertions/fluentassertions/pull/1976) - Rename `ShouldCompareMembersThisDeep` to `ShouldCompareNodesThisDeep` by [@​Wolgo](https://togithub.com/Wolgo) in [https://github.com/fluentassertions/fluentassertions/pull/1992](https://togithub.com/fluentassertions/fluentassertions/pull/1992) - Update nuget packages by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1996](https://togithub.com/fluentassertions/fluentassertions/pull/1996) - Cleanups by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1998](https://togithub.com/fluentassertions/fluentassertions/pull/1998) - Update GitHub actions by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2007](https://togithub.com/fluentassertions/fluentassertions/pull/2007) - Fix the PR link in releases.md by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/2014](https://togithub.com/fluentassertions/fluentassertions/pull/2014) - Prepare 6.8.0 by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/2020](https://togithub.com/fluentassertions/fluentassertions/pull/2020) ##### New Contributors - [@​StacyCash](https://togithub.com/StacyCash) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1963](https://togithub.com/fluentassertions/fluentassertions/pull/1963) - [@​asydikov](https://togithub.com/asydikov) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1970](https://togithub.com/fluentassertions/fluentassertions/pull/1970) - [@​0xced](https://togithub.com/0xced) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1980](https://togithub.com/fluentassertions/fluentassertions/pull/1980) - [@​Wolgo](https://togithub.com/Wolgo) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1991](https://togithub.com/fluentassertions/fluentassertions/pull/1991) - [@​Briaoeuidhtns](https://togithub.com/Briaoeuidhtns) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1994](https://togithub.com/fluentassertions/fluentassertions/pull/1994) - [@​nycdotnet](https://togithub.com/nycdotnet) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2006](https://togithub.com/fluentassertions/fluentassertions/pull/2006) - [@​A-Kjeldgaard](https://togithub.com/A-Kjeldgaard) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/2010](https://togithub.com/fluentassertions/fluentassertions/pull/2010) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.7.0...6.8.0 ### [`v6.7.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.7.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.6.0...6.7.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### New features - Add `BeDefined` and `NotBeDefined` to `EnumAssertions` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1888](https://togithub.com/fluentassertions/fluentassertions/pull/1888) - Restore basic assertions for collections in `System.Data` by [@​logiclrd](https://togithub.com/logiclrd) in [https://github.com/fluentassertions/fluentassertions/pull/1812](https://togithub.com/fluentassertions/fluentassertions/pull/1812) - Add the ability to exclude non-browsable members from equivalency tests by [@​logiclrd](https://togithub.com/logiclrd) in [https://github.com/fluentassertions/fluentassertions/pull/1827](https://togithub.com/fluentassertions/fluentassertions/pull/1827) - Add `For`/`Exclude` to allow exclusion of members inside a collection by [@​whymatter](https://togithub.com/whymatter) in [https://github.com/fluentassertions/fluentassertions/pull/1782](https://togithub.com/fluentassertions/fluentassertions/pull/1782) - Add overload to `HaveElement()` to be able to assert on occurrences for `XDocument` and `XElement` by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1880](https://togithub.com/fluentassertions/fluentassertions/pull/1880) ##### Fixes - Do not add all arguments of type `T` to the matching events, if one is found by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1920](https://togithub.com/fluentassertions/fluentassertions/pull/1920) ##### Documentation - Update documentation for event monitoring at .netstandard2.0 by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1879](https://togithub.com/fluentassertions/fluentassertions/pull/1879) - Update docxml comments on `BeInRange` by [@​andrewlock](https://togithub.com/andrewlock) in [https://github.com/fluentassertions/fluentassertions/pull/1907](https://togithub.com/fluentassertions/fluentassertions/pull/1907) - Add ContainSingle.Where to collection examples by [@​timabell](https://togithub.com/timabell) in [https://github.com/fluentassertions/fluentassertions/pull/1917](https://togithub.com/fluentassertions/fluentassertions/pull/1917) ##### Others - More code coverage by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1871](https://togithub.com/fluentassertions/fluentassertions/pull/1871) - Code style fixes by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1881](https://togithub.com/fluentassertions/fluentassertions/pull/1881) - Add missing tests (according to coveralls) for Data\* objects by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1882](https://togithub.com/fluentassertions/fluentassertions/pull/1882) - Fix small typo in `AssertionScope` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1890](https://togithub.com/fluentassertions/fluentassertions/pull/1890) - Add missing tests for matching `null` with a wildcard by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1889](https://togithub.com/fluentassertions/fluentassertions/pull/1889) - More testing of guarding methods by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1891](https://togithub.com/fluentassertions/fluentassertions/pull/1891) - Fix release notes by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1892](https://togithub.com/fluentassertions/fluentassertions/pull/1892) - Structure assertions with nested classes instead of regions (Part 1) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1898](https://togithub.com/fluentassertions/fluentassertions/pull/1898) - Add missing `null` check tests in Data\*Specs by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1899](https://togithub.com/fluentassertions/fluentassertions/pull/1899) - Structure assertions with nested classes instead of regions (Part 2) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1900](https://togithub.com/fluentassertions/fluentassertions/pull/1900) - Update nugets by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1901](https://togithub.com/fluentassertions/fluentassertions/pull/1901) - Cleanup README.md by [@​robvanuden](https://togithub.com/robvanuden) in [https://github.com/fluentassertions/fluentassertions/pull/1905](https://togithub.com/fluentassertions/fluentassertions/pull/1905) - Structure assertions with nested classes instead of regions (Part 3) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1903](https://togithub.com/fluentassertions/fluentassertions/pull/1903) - Try to stabilize UIFact tests by running them sequentially by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1902](https://togithub.com/fluentassertions/fluentassertions/pull/1902) - Structure assertions with nested classes instead of regions (Part 4) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1908](https://togithub.com/fluentassertions/fluentassertions/pull/1908) - Structure assertions with nested classes instead of regions (Part 5) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1909](https://togithub.com/fluentassertions/fluentassertions/pull/1909) - Fix coveralls badge by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1906](https://togithub.com/fluentassertions/fluentassertions/pull/1906) - Fix codestyle issues by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1912](https://togithub.com/fluentassertions/fluentassertions/pull/1912) - Structure assertions with nested classes instead of regions (Part 6) by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1911](https://togithub.com/fluentassertions/fluentassertions/pull/1911) - Fix the failure message for occurrence regex by [@​ITaluone](https://togithub.com/ITaluone) in [https://github.com/fluentassertions/fluentassertions/pull/1913](https://togithub.com/fluentassertions/fluentassertions/pull/1913) #### New Contributors - [@​ITaluone](https://togithub.com/ITaluone) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1871](https://togithub.com/fluentassertions/fluentassertions/pull/1871) - [@​whymatter](https://togithub.com/whymatter) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1782](https://togithub.com/fluentassertions/fluentassertions/pull/1782) - [@​andrewlock](https://togithub.com/andrewlock) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1907](https://togithub.com/fluentassertions/fluentassertions/pull/1907) - [@​timabell](https://togithub.com/timabell) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1917](https://togithub.com/fluentassertions/fluentassertions/pull/1917) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.6.0...6.7.0 ### [`v6.6.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.6.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.5.1...6.6.0) <!-- Release notes generated using configuration in .github/release.yml at master --> #### What's Changed ##### New features - Adding support for .NET6 `DateOnly` struct by [@​iliashkolyar](https://togithub.com/iliashkolyar) in [https://github.com/fluentassertions/fluentassertions/pull/1844](https://togithub.com/fluentassertions/fluentassertions/pull/1844) - Adding support for .NET6 `TimeOnly` struct by [@​iliashkolyar](https://togithub.com/iliashkolyar) in [https://github.com/fluentassertions/fluentassertions/pull/1848](https://togithub.com/fluentassertions/fluentassertions/pull/1848) - Extend `NullableBooleanAssertions` by `NotBe()` by [@​mu88](https://togithub.com/mu88) in [https://github.com/fluentassertions/fluentassertions/pull/1865](https://togithub.com/fluentassertions/fluentassertions/pull/1865) - Added a new overload to `MatchRegex()` to assert on the number of regex matches by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1869](https://togithub.com/fluentassertions/fluentassertions/pull/1869) ##### Improvements - Annotated `[Not]MatchRegex` with `[StringSyntax("Regex")]` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1816](https://togithub.com/fluentassertions/fluentassertions/pull/1816) - Determine caller name for `EnumAssertions.Be` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1835](https://togithub.com/fluentassertions/fluentassertions/pull/1835) - Add difference to numeric assertion failure messages by [@​iliashkolyar](https://togithub.com/iliashkolyar) in [https://github.com/fluentassertions/fluentassertions/pull/1859](https://togithub.com/fluentassertions/fluentassertions/pull/1859) - Improve difference calculation of overflowing integrals by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1875](https://togithub.com/fluentassertions/fluentassertions/pull/1875) ##### Fixes - Ensure `ExcludingMissingMembers` doesn't undo usage of `WithMapping` by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1838](https://togithub.com/fluentassertions/fluentassertions/pull/1838) - Better support for NaN in numeric assertions on floats and doubles by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1822](https://togithub.com/fluentassertions/fluentassertions/pull/1822) - `WithMapping` now works in equivalency assertions on collections by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1858](https://togithub.com/fluentassertions/fluentassertions/pull/1858) - Better handling of NaN in nullable numeric assertions by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1867](https://togithub.com/fluentassertions/fluentassertions/pull/1867) ##### Documentation - Fix typo in comment for `ComparingRecordsByMembers` by [@​kijanawoodard](https://togithub.com/kijanawoodard) in [https://github.com/fluentassertions/fluentassertions/pull/1809](https://togithub.com/fluentassertions/fluentassertions/pull/1809) - Add release notes template by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1818](https://togithub.com/fluentassertions/fluentassertions/pull/1818) - Update migration tip on how to replace `AllItemsAreInstancesOfType` by [@​IT-VBFK](https://togithub.com/IT-VBFK) in [https://github.com/fluentassertions/fluentassertions/pull/1873](https://togithub.com/fluentassertions/fluentassertions/pull/1873) ##### Others - Add code coverage reporting by [@​eNeRGy164](https://togithub.com/eNeRGy164) in [https://github.com/fluentassertions/fluentassertions/pull/1815](https://togithub.com/fluentassertions/fluentassertions/pull/1815) - Fix uninvoked actions in tests by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1817](https://togithub.com/fluentassertions/fluentassertions/pull/1817) - Update nuget packages by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1819](https://togithub.com/fluentassertions/fluentassertions/pull/1819) - More Code Coverage by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1820](https://togithub.com/fluentassertions/fluentassertions/pull/1820) - Reordered the numeric tests and replaced regions with nested classes by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1821](https://togithub.com/fluentassertions/fluentassertions/pull/1821) - Fill gaps in System.Data unit testing by [@​logiclrd](https://togithub.com/logiclrd) in [https://github.com/fluentassertions/fluentassertions/pull/1814](https://togithub.com/fluentassertions/fluentassertions/pull/1814) - Add net6.0 target by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1831](https://togithub.com/fluentassertions/fluentassertions/pull/1831) - Target PRs at develop instead of master by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1836](https://togithub.com/fluentassertions/fluentassertions/pull/1836) - Adds test for string collection equivalency by [@​chvollm](https://togithub.com/chvollm) in [https://github.com/fluentassertions/fluentassertions/pull/1843](https://togithub.com/fluentassertions/fluentassertions/pull/1843) - Replaced regions in numeric specs with nested classes by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1837](https://togithub.com/fluentassertions/fluentassertions/pull/1837) - Rename constructor parameter for `NullableDateOnlyAssertions` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1846](https://togithub.com/fluentassertions/fluentassertions/pull/1846) - Improve code coverage of fake should overloads by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1847](https://togithub.com/fluentassertions/fluentassertions/pull/1847) - Improve code coverage and fix some test mutations by [@​eNeRGy164](https://togithub.com/eNeRGy164) in [https://github.com/fluentassertions/fluentassertions/pull/1839](https://togithub.com/fluentassertions/fluentassertions/pull/1839) - Removes unnecessary code by [@​chvollm](https://togithub.com/chvollm) in [https://github.com/fluentassertions/fluentassertions/pull/1849](https://togithub.com/fluentassertions/fluentassertions/pull/1849) - `A_NaN_is_never_in_range_of_two_doubles` was exercising `float`s by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1852](https://togithub.com/fluentassertions/fluentassertions/pull/1852) - Split `StringAssertionSpecs` file by [@​eNeRGy164](https://togithub.com/eNeRGy164) in [https://github.com/fluentassertions/fluentassertions/pull/1855](https://togithub.com/fluentassertions/fluentassertions/pull/1855) - Update internal test and build nuget packages by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1866](https://togithub.com/fluentassertions/fluentassertions/pull/1866) - Add test coverage for `OccurrenceConstraint` by [@​eNeRGy164](https://togithub.com/eNeRGy164) in [https://github.com/fluentassertions/fluentassertions/pull/1856](https://togithub.com/fluentassertions/fluentassertions/pull/1856) - Fix Some Typos in UpgradingToV6.md by [@​say25](https://togithub.com/say25) in [https://github.com/fluentassertions/fluentassertions/pull/1870](https://togithub.com/fluentassertions/fluentassertions/pull/1870) - Cleanups in Specs by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1853](https://togithub.com/fluentassertions/fluentassertions/pull/1853) #### New Contributors - [@​kijanawoodard](https://togithub.com/kijanawoodard) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1809](https://togithub.com/fluentassertions/fluentassertions/pull/1809) - [@​say25](https://togithub.com/say25) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1870](https://togithub.com/fluentassertions/fluentassertions/pull/1870) - [@​IT-VBFK](https://togithub.com/IT-VBFK) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1869](https://togithub.com/fluentassertions/fluentassertions/pull/1869) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.5.1...6.6.0 ### [`v6.5.1`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.5.1) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.5.0...6.5.1) #### What's Changed - Maintenance on release notes, Github content files, etc by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1800](https://togithub.com/fluentassertions/fluentassertions/pull/1800) - Make the site work with Ruby 3 and update catchphrase and sponsors by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1801](https://togithub.com/fluentassertions/fluentassertions/pull/1801) - Fix ordering collections by the identity function by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1802](https://togithub.com/fluentassertions/fluentassertions/pull/1802) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.5.0...6.5.1 Public release notes: https://fluentassertions.com/releases/[#​651](https://togithub.com/fluentassertions/fluentassertions/issues/651) ### [`v6.5.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.5.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.4.0...6.5.0) #### What's Changed - Allow mapping properties and/or fields with different names by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1742](https://togithub.com/fluentassertions/fluentassertions/pull/1742) - Moved the equivalency specs to a separate test project and split them into separate classes by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1789](https://togithub.com/fluentassertions/fluentassertions/pull/1789) - Improved docs on `BeLowerCased` and `BeUpperCased` for mixed strings by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1792](https://togithub.com/fluentassertions/fluentassertions/pull/1792) - Fixed a continuation issue in the fluent assertion API by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1791](https://togithub.com/fluentassertions/fluentassertions/pull/1791) - Properly recognized non-class types as internal when using `HaveAccessModifier` assertion by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1793](https://togithub.com/fluentassertions/fluentassertions/pull/1793) - Caller identification does not handle all arguments using `new` by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1794](https://togithub.com/fluentassertions/fluentassertions/pull/1794) - Added `AllSatisfy` by [@​kmusick](https://togithub.com/kmusick) in [https://github.com/fluentassertions/fluentassertions/pull/1790](https://togithub.com/fluentassertions/fluentassertions/pull/1790) - Fix and improve tracing for nested `AssertionScope`s by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1797](https://togithub.com/fluentassertions/fluentassertions/pull/1797) #### New Contributors - [@​kmusick](https://togithub.com/kmusick) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1790](https://togithub.com/fluentassertions/fluentassertions/pull/1790) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.4.0...6.5.0 ### [`v6.4.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.4.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.3.0...6.4.0) #### What's Changed - Adds `ThatAreStatic` and `ThatAreNotStatic` to `MethodInfoSelector` by [@​chvollm](https://togithub.com/chvollm) in [https://github.com/fluentassertions/fluentassertions/pull/1740](https://togithub.com/fluentassertions/fluentassertions/pull/1740) - Trailing slash results in 404 page by [@​MEmanuelsson](https://togithub.com/MEmanuelsson) in [https://github.com/fluentassertions/fluentassertions/pull/1767](https://togithub.com/fluentassertions/fluentassertions/pull/1767) - Introduce assertions for `StatusCode` of `HttpResponseMessage` by [@​mu88](https://togithub.com/mu88) for [@​swisspost](https://togithub.com/swisspost) in [https://github.com/fluentassertions/fluentassertions/pull/1737](https://togithub.com/fluentassertions/fluentassertions/pull/1737) - `ContainItemsAssignableTo` now expects at least one item assignable to `T` by [@​MullerWasHere](https://togithub.com/MullerWasHere) in [https://github.com/fluentassertions/fluentassertions/pull/1765](https://togithub.com/fluentassertions/fluentassertions/pull/1765) - Variable name is not captured after await assertion by [@​MullerWasHere](https://togithub.com/MullerWasHere) in [https://github.com/fluentassertions/fluentassertions/pull/1770](https://togithub.com/fluentassertions/fluentassertions/pull/1770) - Fix typos by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1774](https://togithub.com/fluentassertions/fluentassertions/pull/1774) - Non-generic overload for `WithInnerExceptionExactly` by [@​karenfarnes](https://togithub.com/karenfarnes) in [https://github.com/fluentassertions/fluentassertions/pull/1769](https://togithub.com/fluentassertions/fluentassertions/pull/1769) - Fix determining caller identity for NET Native by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1776](https://togithub.com/fluentassertions/fluentassertions/pull/1776) - Adjust Identifier properties by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1777](https://togithub.com/fluentassertions/fluentassertions/pull/1777) - Relax `When_the_execution_time_of_an_async_action_is_less_than_a_limit_it_should_not_throw` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1778](https://togithub.com/fluentassertions/fluentassertions/pull/1778) - Bump Nuke/GitVersion, improve PR numbering, simplify Yaml script by [@​dennisdoomen](https://togithub.com/dennisdoomen) in [https://github.com/fluentassertions/fluentassertions/pull/1775](https://togithub.com/fluentassertions/fluentassertions/pull/1775) - `OccurredEvent` ordering on monitored object is now done via thread-safe counter by [@​MullerWasHere](https://togithub.com/MullerWasHere) in [https://github.com/fluentassertions/fluentassertions/pull/1773](https://togithub.com/fluentassertions/fluentassertions/pull/1773) - override Identifier for `BufferedStream` by [@​amosonn](https://togithub.com/amosonn) in [https://github.com/fluentassertions/fluentassertions/pull/1772](https://togithub.com/fluentassertions/fluentassertions/pull/1772) - Fix `TryGetValue` for dictionary like enumerables by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1786](https://togithub.com/fluentassertions/fluentassertions/pull/1786) - Optimize build times by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1787](https://togithub.com/fluentassertions/fluentassertions/pull/1787) - Guard against unformattable caller name by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1788](https://togithub.com/fluentassertions/fluentassertions/pull/1788) #### New Contributors - [@​MEmanuelsson](https://togithub.com/MEmanuelsson) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1767](https://togithub.com/fluentassertions/fluentassertions/pull/1767) - [@​MullerWasHere](https://togithub.com/MullerWasHere) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1765](https://togithub.com/fluentassertions/fluentassertions/pull/1765) - [@​karenfarnes](https://togithub.com/karenfarnes) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1769](https://togithub.com/fluentassertions/fluentassertions/pull/1769) - [@​amosonn](https://togithub.com/amosonn) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1772](https://togithub.com/fluentassertions/fluentassertions/pull/1772) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.3.0...6.4.0 **Public release notes**: https://fluentassertions.com/releases/[#​640](https://togithub.com/fluentassertions/fluentassertions/issues/640) ### [`v6.3.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.3.0) [Compare Source](https://togithub.com/fluentassertions/fluentassertions/compare/6.2.0...6.3.0) #### What's Changed - Fix building on linux/WSL by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1723](https://togithub.com/fluentassertions/fluentassertions/pull/1723) - Test that `ComparingByMembers` clears `equalityStrategyCache` by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1724](https://togithub.com/fluentassertions/fluentassertions/pull/1724) - Adding `ThatAreAsync()` and `ThatAreNotAsync()` to `MethodInfoSelector` by [@​chvollm](https://togithub.com/chvollm) in [https://github.com/fluentassertions/fluentassertions/pull/1725](https://togithub.com/fluentassertions/fluentassertions/pull/1725) - Return Task for async/non-async test method by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1736](https://togithub.com/fluentassertions/fluentassertions/pull/1736) - Fix contributing guidelines by [@​wgnf](https://togithub.com/wgnf) in [https://github.com/fluentassertions/fluentassertions/pull/1739](https://togithub.com/fluentassertions/fluentassertions/pull/1739) - Replace non-generic collection examples with generic collections in documentation by [@​jonathonchase](https://togithub.com/jonathonchase) in [https://github.com/fluentassertions/fluentassertions/pull/1745](https://togithub.com/fluentassertions/fluentassertions/pull/1745) - Adds ThatAre(Not)Virtual to MethodInfoSelector by [@​chvollm](https://togithub.com/chvollm) in [https://github.com/fluentassertions/fluentassertions/pull/1744](https://togithub.com/fluentassertions/fluentassertions/pull/1744) - Prevent multiple enumeration in `ContainSingle()` by [@​bert2](https://togithub.com/bert2) in [https://github.com/fluentassertions/fluentassertions/pull/1753](https://togithub.com/fluentassertions/fluentassertions/pull/1753) - Change HaveCount assertion message order to state number before dumpi… by [@​iliashkolyar](https://togithub.com/iliashkolyar) in [https://github.com/fluentassertions/fluentassertions/pull/1760](https://togithub.com/fluentassertions/fluentassertions/pull/1760) - Throw exception when calling object.Equals on Assertions class by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1764](https://togithub.com/fluentassertions/fluentassertions/pull/1764) - Take sync work into account in CompleteWithinAsync by [@​jnyrup](https://togithub.com/jnyrup) in [https://github.com/fluentassertions/fluentassertions/pull/1762](https://togithub.com/fluentassertions/fluentassertions/pull/1762) #### New Contributors - [@​wgnf](https://togithub.com/wgnf) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1739](https://togithub.com/fluentassertions/fluentassertions/pull/1739) - [@​jonathonchase](https://togithub.com/jonathonchase) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1745](https://togithub.com/fluentassertions/fluentassertions/pull/1745) - [@​bert2](https://togithub.com/bert2) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1753](https://togithub.com/fluentassertions/fluentassertions/pull/1753) - [@​iliashkolyar](https://togithub.com/iliashkolyar) made their first contribution in [https://github.com/fluentassertions/fluentassertions/pull/1760](https://togithub.com/fluentassertions/fluentassertions/pull/1760) **Full Changelog**: https://github.com/fluentassertions/fluentassertions/compare/6.2.0...6.3.0 ### [`v6.2.0`](https://togithub.com/fluentassertions/fluentassertions/releases/tag/6.2.0) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/cythral/brighid-discord-adapter). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4zNC4xIiwidXBkYXRlZEluVmVyIjoiMzUuNDguMiJ9--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Talen Fisher <talen.fisher@cythral.com>
Fixed #1808
There appears to be no objective way to detect whether a type is indeed a record struct. This pull requests tries to make a best guess by looking for a value type having at least a pair of compiler-generated equality and inequality operators.