Migrate to AwesomeAssertions, release-please, and .NET 8/10#53
Merged
Conversation
added 6 commits
June 19, 2026 12:55
FluentAssertions v8+ requires a paid commercial license, which is why the dependency was pinned to [7.2.1,8.0). Replace it with AwesomeAssertions, the Apache-2.0 community fork of FluentAssertions 7.x, on the actively-developed 9.x line. AwesomeAssertions 9.x renames the namespace FluentAssertions -> AwesomeAssertions and carries the FluentAssertions v8 equivalency rework, so the equivalency extensibility used by EquivalencyAssertionOptionsExtensions was ported: EquivalencyAssertionOptions<T> -> EquivalencyOptions<T>, the IEquivalencyStep.Handle validator parameter -> IValidateChildNodeEquivalency, RecursivelyAssertEquality -> AssertEquivalencyOf, and EquivalencyResult.AssertionCompleted -> EquivalencyProven. Also adds the AwesomeAssertions.Analyzers (dev-only) and tests covering the ported equivalency extensions. BREAKING CHANGE: the assertion package and namespace changed from FluentAssertions to AwesomeAssertions. Consumers must replace `using FluentAssertions;` with `using AwesomeAssertions;` (and the .Equivalency/.Primitives/.Execution/.Extensions sub-namespaces) and remove any direct FluentAssertions package reference.
- Multi-target net8.0;net10.0 (drop net9 STS and the vestigial netstandard2.1 fallback; net9 consumers resolve the net8.0 asset) - Bump test project to net10.0 - Remove framework-provided System.Net.Http and System.Text.RegularExpressions package references (net10 package pruning flags System.Net.Http via NU1510)
davidkallesen
previously approved these changes
Jun 22, 2026
added 5 commits
June 22, 2026 13:42
Required to build the net10.0 target in the build and release-please workflows.
…ze fixtures
- Add tests for SubstituteExtensions, TaskExtensions, ObjectExtensions,
FixtureFactory and the AutoFixture customizations (recursion, cancellation
token, date-only, immutable, auto-register)
- Reorganize shared fixtures from SampleTypes into
TestSupport/{Models,Abstractions,Customizations}
- Move the new test-fixture namespaces and System.Collections.Immutable /
NSubstitute.Exceptions into global usings
- Enable AnalysisLevel latest-All, add Atc.Analyzer, bump AsyncFixer/Meziantou/ SonarAnalyzer, and set LangVersion 14.0 - Drop always-true NET5_0/NET6_0 preprocessor guards (floor is net8.0) - Fix surfaced diagnostics: ATC202 parameter formatting, seal the TheoryData subclass (MA0056), and consolidate usings into global usings
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Changes
💥 Breaking Changes
📦 Dependencies
👷 CI/CD
🔧 Configuration
✨ Features
♻️ Refactoring
📝 Documentation
Breaking Changes
using FluentAssertions;withusing AwesomeAssertions;(and .Equivalency/.Primitives/.Execution)..Should()...assertions are unchanged (API matches FA 7.x).EquivalencyOptions<T>(wasEquivalencyAssertionOptions<T>).