8000 Ensured WithTracing is safe when used with BeEquivalentTo globally by dennisdoomen · Pull Request #3067 · fluentassertions/fluentassertions · GitHub
[go: up one dir, main page]

Skip to content

Ensured WithTracing is safe when used with BeEquivalentTo globally#3067

Merged
dennisdoomen merged 1 commit intofluentassertions:mainfrom
dennisdoomen:fix/tracing-concurrency
Jul 2, 2025
Merged

Ensured WithTracing is safe when used with BeEquivalentTo globally#3067
dennisdoomen merged 1 commit intofluentassertions:mainfrom
dennisdoomen:fix/tracing-concurrency

Conversation

@dennisdoomen
Copy link
Member

Solves #2619

@dennisdoomen dennisdoomen force-pushed the fix/tracing-concurrency branch from 7965d9c to 74b65e7 Compare June 29, 2025 07:30
@dennisdoomen dennisdoomen requested a review from Copilot June 29, 2025 07:30
Copy link
Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR ensures that WithTracing is safe when used with BeEquivalentTo globally. It updates the release notes, adds a test to validate concurrent tracing behavior, and refactors the trace writer to be thread safe by using AsyncLocal.

  • Updated release notes to include version 8.5.0 and related fixes/enhancements.
  • Added a concurrent execution test in TracingSpecs to validate tracing safety.
  • Refactored StringBuilderTraceWriter to use AsyncLocal for thread safety.

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
docs/_pages/releases.md Updated release notes with version 8.5.0 fixes and enhancements.
Tests/FluentAssertions.Equivalency.Specs/TracingSpecs.cs Added a new test to ensure WithTracing works safely under concurrent conditions.
Src/FluentAssertions/Equivalency/Tracing/StringBuilderTraceWriter.cs Refactored thread unsafe code by replacing direct state management with AsyncLocal.

@dennisdoomen dennisdoomen force-pushed the fix/tracing-concurrency branch from 74b65e7 to 645df6d Compare June 29, 2025 07:35
@dennisdoomen dennisdoomen marked this pull request as ready for review June 29, 2025 07:35
@dennisdoomen dennisdoomen requested a review from jnyrup June 29, 2025 07:35
@github-actions
Copy link
github-actions bot commented Jun 29, 2025

Qodana for .NET

It seems all right 👌

No new problems were found according to the checks applied

💡 Qodana analysis was run in the pull request mode: only the changed files were checked
☁️ View the detailed Qodana report

Contact Qodana team

Contact us at qodana-support@jetbrains.com

@dennisdoomen dennisdoomen removed the request for review from jnyrup June 29, 2025 07:58
@dennisdoomen dennisdoomen force-pushed the fix/tracing-concurrency branch from 645df6d to 017d4d7 Compare June 29, 2025 09:48
@coveralls
Copy link
coveralls commented Jun 29, 2025

Pull Request Test Coverage Report for Build 16028431685

Details

  • 5 of 5 (100.0%) changed or added relevant lines in 3 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage increased (+0.001%) to 97.309%

Totals Coverage Status
Change from base Build 15982317140: 0.001%
Covered Lines: 12545
Relevant Lines: 12745

💛 - Coveralls

@dennisdoomen dennisdoomen force-pushed the fix/tracing-concurrency branch 4 times, most recently from 93d7291 to e8df814 Compare June 29, 2025 17:26
@dennisdoomen dennisdoomen force-pushed the fix/tracing-concurrency branch 2 times, most recently from 6283f6d to 5f07848 Compare July 1, 2025 21:06
@dennisdoomen dennisdoomen requested a review from jnyrup July 1, 2025 21:06
@dennisdoomen dennisdoomen force-pushed the fix/tracing-concurrency branch from 5f07848 to 3b21037 Compare July 2, 2025 14:29
@dennisdoomen dennisdoomen requested a review from jnyrup July 2, 2025 14:29
@dennisdoomen dennisdoomen force-pushed the fix/tracing-concurrency branch from 3b21037 to 6e4adc3 Compare July 2, 2025 14:49
@dennisdoomen dennisdoomen merged commit 9678cd6 into fluentassertions:main Jul 2, 2025
8 checks passed
@dennisdoomen dennisdoomen deleted the fix/tracing-concurrency branch July 2, 2025 15:09
PhilipWoulfe pushed a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 1, 2026
Updated
[FluentAssertions](https://github.com/fluentassertions/fluentassertions)
from 8.1.1 to 8.8.0.

<details>
<summary>Release notes</summary>

_Sourced from [FluentAssertions's
releases](https://github.com/fluentassertions/fluentassertions/releases)._

## 8.8.0

<!-- Release notes generated using configuration in .github/release.yml
at main -->

## What's Changed
### New features
* Add support for MSTest4 by @​jnyrup in
fluentassertions/fluentassertions#3111
### Improvements
* Allow WithoutMessage when using Should().Throw() and ThrowAsync() by
@​dennisdoomen in
fluentassertions/fluentassertions#3100
* Improve reporting of the differences between long strings by
@​dennisdoomen in
fluentassertions/fluentassertions#3101
* Allow customizing the equivalency behavior for BeXmlSerializable by
@​logiclrd in
fluentassertions/fluentassertions#3107
### Documentation
* Add docs for `config` parameter by @​jnyrup in
fluentassertions/fluentassertions#3104
### Others
* Refreshed readme by @​dennisdoomen in
fluentassertions/fluentassertions#3106
* Merge hotfix 8.7.1 back to main by @​dennisdoomen in
fluentassertions/fluentassertions#3109
* Fix release notes by @​jnyrup in
fluentassertions/fluentassertions#3112
* Bump github/codeql-action from 3 to 4 by @​dependabot[bot] in
fluentassertions/fluentassertions#3113


**Full Changelog**:
fluentassertions/fluentassertions@8.7.1...8.8.0

## 8.7.1

<!-- Release notes generated using configuration in .github/release.yml
at hotfix/8.7.1 -->

## What's Changed
### Others
* JSON assertions did not properly handle floats, doubles and unsigned …
by @​dennisdoomen in
fluentassertions/fluentassertions#3105
* Fixed ambiguity when using Should on a JsonNode derived class ... by
@​JSkimming in
fluentassertions/fluentassertions#3102


**Full Changelog**:
fluentassertions/fluentassertions@8.7.0...8.7.1

## 8.7.0

<!-- Release notes generated using configuration in .github/release.yml
at ae620add07cf6666841e568fd3bf8a0733478bb5 -->

## What's Changed
### New features
* Added System.Text.Json assertion APIs and BeEquivalentTo support by
@​dennisdoomen in
fluentassertions/fluentassertions#3094
### Others
* Address a bunch of Qodana issues by @​dennisdoomen in
fluentassertions/fluentassertions#3082
* Bump actions/checkout from 4 to 5 by @​dependabot[bot] in
fluentassertions/fluentassertions#3085
* Bump JetBrains/qodana-action from 2025.1 to 2025.2 by
@​dependabot[bot] in
fluentassertions/fluentassertions#3086
* Bump actions/download-artifact from 4 to 5 by @​dependabot[bot] in
fluentassertions/fluentassertions#3087
* Bump cspell from 9.2.0 to 9.2.1 by @​dependabot[bot] in
fluentassertions/fluentassertions#3090
* Bump actions/setup-dotnet from 4 to 5 by @​dependabot[bot] in
fluentassertions/fluentassertions#3092
* Add lock file for nuget packages by @​jnyrup in
fluentassertions/fluentassertions#3084
* Set `DisableImplicitNuGetFallbackFolder` by @​jnyrup in
fluentassertions/fluentassertions#3095
* Bump Nugets by @​jnyrup in
fluentassertions/fluentassertions#3096
* Revert package locking by @​jnyrup in
fluentassertions/fluentassertions#3098
* Clean-up tests related to exceptions by @​dennisdoomen in
fluentassertions/fluentassertions#3099


**Full Changelog**:
fluentassertions/fluentassertions@8.6.0...8.7.0

## 8.6.0

<!-- Release notes generated using configuration in .github/release.yml
at main -->

## What's Changed
### Improvements
* Add support for inline assertions using `Value.ThatMatches` and
`Value.ThatSatisfies` by @​dennisdoomen in
fluentassertions/fluentassertions#3076
### Others
* Remove Microsoft.SourceLink.GitHub by @​SimonCropp in
fluentassertions/fluentassertions#3072
* Bump cspell from 9.1.3 to 9.1.5 by @​dependabot[bot] in
fluentassertions/fluentassertions#3073
* Added PackageGuard to the build pipeline by @​dennisdoomen in
fluentassertions/fluentassertions#3075
* Bump cspell from 9.1.5 to 9.2.0 by @​dependabot[bot] in
fluentassertions/fluentassertions#3077
* Remove dependencies on Bogus by @​jnyrup in
fluentassertions/fluentassertions#3080
* Update nuget packages by @​jnyrup in
fluentassertions/fluentassertions#3081
* Follow-up to #​3076 by @​jnyrup in
fluentassertions/fluentassertions#3079
* Documentation and typo fixes by @​jnyrup in
fluentassertions/fluentassertions#3078

## New Contributors
* @​SimonCropp made their first contribution in
fluentassertions/fluentassertions#3072

**Full Changelog**:
fluentassertions/fluentassertions@8.5.0...8.6.0

## 8.5.0

<!-- Release notes generated using configuration in .github/release.yml
at main -->

## What's Changed
### New features
* Extended BeEquivalentTo with support for checking the type of the
properties by @​dennisdoomen in
fluentassertions/fluentassertions#3066
### Fixes
* Ensured WithTracing is safe when used with BeEquivalentTo globally by
@​dennisdoomen in
fluentassertions/fluentassertions#3067
### Others
* Revisit the .editorconfig rules by @​dennisdoomen in
fluentassertions/fluentassertions#3063
* Bump cspell from 9.1.1 to 9.1.2 by @​dependabot[bot] in
fluentassertions/fluentassertions#3068
* Use .NET 9 SDK by @​jnyrup in
fluentassertions/fluentassertions#3069
* Bump cspell from 9.1.2 to 9.1.3 by @​dependabot[bot] in
fluentassertions/fluentassertions#3071


**Full Changelog**:
fluentassertions/fluentassertions@8.4.0...8.5.0

## 8.4.0

<!-- Release notes generated using configuration in .github/release.yml
at main -->

## What's Changed
### Improvements
* Allow excluding properties by name anywhere in the graph by
@​dennisdoomen in
fluentassertions/fluentassertions#3062
* Added Should().Throw(), ThrowAsync() and ThrowWithinAsync() flavors
that don’t require a specific exception type by @​Xceed-DelvaJB in
fluentassertions/fluentassertions#3059
### Others
* Bump cspell from 9.0.1 to 9.0.2 by @​dependabot in
fluentassertions/fluentassertions#3050
* Bump JetBrains/qodana-action from 2024.2 to 2025.1 by @​dependabot in
fluentassertions/fluentassertions#3044
* Fix qodana warnings by @​jnyrup in
fluentassertions/fluentassertions#3053
* Add contributor grant by @​dennisdoomen in
fluentassertions/fluentassertions#3055
* Bump cspell from 9.0.2 to 9.1.1 by @​dependabot in
fluentassertions/fluentassertions#3058

## New Contributors
* @​Xceed-DelvaJB made their first contribution in
fluentassertions/fluentassertions#3059

**Full Changelog**:
fluentassertions/fluentassertions@8.3.0...8.4.0

## 8.3.0

<!-- Release notes generated using configuration in .github/release.yml
at main -->

## What's Changed
### Improvements
* Improve rendering of exception messages when using WithMessage by
@​dennisdoomen in
fluentassertions/fluentassertions#3039
* Clarify the date/time type when comparing dates, times and
combinations of those by @​dennisdoomen in
fluentassertions/fluentassertions#3049
### Others
* Bump cspell from 8.17.5 to 8.18.1 by @​dependabot in
fluentassertions/fluentassertions#3041
* Bump cspell from 8.18.1 to 8.19.2 by @​dependabot in
fluentassertions/fluentassertions#3042
* Bump cspell from 8.19.2 to 8.19.3 by @​dependabot in
fluentassertions/fluentassertions#3043
* Bump cspell from 8.19.3 to 9.0.0 by @​dependabot in
fluentassertions/fluentassertions#3045
* Bump cspell from 9.0.0 to 9.0.1 by @​dependabot in
fluentassertions/fluentassertions#3046
* Fix links to test suites in bug report template by @​robvanuden in
fluentassertions/fluentassertions#3047


**Full Changelog**:
fluentassertions/fluentassertions@8.2.0...8.3.0

## 8.2.0

<!-- Release notes generated using configuration in .github/release.yml
at main -->

## What's Changed
### Improvements
* Optimize various string operations by @​jnyrup in
fluentassertions/fluentassertions#3037
* Reworked formatting and support multi-dimensional arrays. by
@​dennisdoomen in
fluentassertions/fluentassertions#3009
### Fixes
* Restore `StringSyntax` annotations by @​jnyrup in
fluentassertions/fluentassertions#3033
* Regex fixups by @​jnyrup in
fluentassertions/fluentassertions#3034
* Handle missing caller identifier by @​jnyrup in
fluentassertions/fluentassertions#3036
### Others
* Bump cspell from 8.17.3 to 8.17.5 by @​dependabot in
fluentassertions/fluentassertions#3035


**Full Changelog**:
fluentassertions/fluentassertions@8.1.1...8.2.0

Commits viewable in [compare
view](fluentassertions/fluentassertions@8.1.1...8.8.0).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=FluentAssertions&package-manager=nuget&previous-version=8.1.1&new-version=8.8.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

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


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

0