Skip to content

test: fix flaky ObjectInitializer continuation-thread test - #6932

Merged
thomhurst merged 1 commit into
mainfrom
fix/flaky-object-initializer-thread-id
Sep 29, 2026
Merged

thomhurst merged 1 commit into
mainfrom
fix/flaky-object-initializer-thread-id

Conversation

@thomhurst

@thomhurst thomhurst commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

ObjectInitializerTests.Waiting_Continuations_Do_Not_Run_On_The_Initializing_Thread failed on macOS CI (run 36556399225) with Expected to not be equal to 17.

Cause: the test runs initialization on a TaskCreationOptions.LongRunning dedicated thread, which exits as soon as initialization finishes. It then compared Environment.CurrentManagedThreadId values. The runtime can give a dead thread's managed ID to a new thread-pool thread, and that thread can run a correctly queued waiter continuation. The IDs then match even though the product code behaved correctly.

Fix: capture Thread.CurrentThread and assert IsNotSameReferenceAs. A new thread-pool thread is always a different Thread object, even when it gets the same ID. The assertion still checks the same behaviour.

Test plan

  • Ran the test (both arguments) 25 times in a row on net10.0 Release: 25/25 passed.
  • The whole ObjectInitializerTests class passes: 11/11.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Tests
    • Improved validation that waiter continuations run on a different thread from the one performing initialization.

The initializing thread is a LongRunning dedicated thread that exits once
initialization finishes. The runtime can then reuse its ManagedThreadId for
a thread-pool thread that runs a correctly queued waiter continuation, which
made the IsNotEqualTo(threadId) check fail spuriously (seen on macOS CI).
Compare Thread object references instead, which stay distinct.

Co-Authored-By: Claude <noreply@anthropic.com>
@thomhurst
thomhurst deployed to Pull Requests September 29, 2026 14:21 — with GitHub Actions Active
@thomhurst
thomhurst deployed to Pull Requests September 29, 2026 14:21 — with GitHub Actions Active
@thomhurst
thomhurst deployed to Pull Requests September 29, 2026 14:21 — with GitHub Actions Active
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-29T14:23:23.980127Z 86a7b33 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 2c6e858c-d25c-4150-85d2-a341e65a501a

📥 Commits

Reviewing files that changed from the base of the PR and between c496882 and 86a7b33.

📒 Files selected for processing (1)
  • tests/TUnit.UnitTests/ObjectInitializerTests.cs

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 5 remain after this review.


📝 Walkthrough

Walkthrough

The object initializer test now tracks the initializing thread and waiter continuation threads as Thread objects. It asserts that the initializing thread is non-null and that each waiter continuation runs on a different thread object.

Changes

Object initializer thread test

Layer / File(s) Summary
Thread identity assertions
tests/TUnit.UnitTests/ObjectInitializerTests.cs
The test records the initializing thread and waiter continuation threads as Thread objects. It checks that the initializing thread is non-null and compares thread references.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~7 minutes

Change: Other

Suggested reviewers: sing303

Merge Risk: ⚪ Minimal · up to 86a7b

This test-only change avoids false failures from reused thread IDs while preserving the regression scenario. No actionable merge risk remains.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the flaky ObjectInitializer continuation-thread test and the corrective change. It is concise and directly related to the main purpose of the pull request.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit checks each thread with care,
The initializing thread is there.
Waiters take a different track,
No managed IDs to compare back.
The test now watches objects hop,
Then marks its tidy check complete.

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

Review: LGTM.

The diagnosis is sound. ManagedThreadId can be recycled after the LongRunning thread exits, so comparing Thread references is the right fix. It keeps the same intent, because a distinct live or dead Thread object is never the same reference. The added IsNotNull guard on initializingThread is a good touch: without it, a null would make IsNotSameReferenceAs pass vacuously against a never-assigned value.

Minor, non-blocking: holding the Thread reference keeps the exited thread object alive until the test ends. That is harmless here.

No issues found.

@greptile-apps

greptile-apps Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Low risk]

The PR appears safe to merge.

Summary

The PR changes a test to compare Thread objects rather than managed thread IDs, avoiding a false failure when a dedicated thread’s ID is reused.

  • The assertion API and initializer lifecycle support the revised check.

Reviews (1) · Last reviewed commit: "test: compare Thread identity in ObjectI..."

@thomhurst
thomhurst enabled auto-merge (squash) September 29, 2026 14:24
@thomhurst
thomhurst disabled auto-merge September 29, 2026 14:32
@thomhurst
thomhurst enabled auto-merge (squash) September 29, 2026 14:32
@thomhurst
thomhurst disabled auto-merge September 29, 2026 14:40
@thomhurst
thomhurst enabled auto-merge (squash) September 29, 2026 14:40
@thomhurst
thomhurst merged commit a703e6f into main Sep 29, 2026
21 checks passed
@thomhurst
thomhurst deleted the fix/flaky-object-initializer-thread-id branch September 29, 2026 15:04
alexeyzimarev pushed a commit to kurrent-io/kcap-cli that referenced this pull request Oct 5, 2026
Updated [TUnit](https://github.com/thomhurst/TUnit) from 1.68.4 to
1.72.10.

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

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

## 1.72.10

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

## What's Changed
### Other Changes
* fix(source-gen): adapt ValueTask<T> test results by @​zion-sati in
thomhurst/TUnit#6930
### Dependencies
* chore(deps): update tunit to 1.72.4 by @​thomhurst in
thomhurst/TUnit#6941
* chore(deps): update aspire to 13.6.0 by @​thomhurst in
thomhurst/TUnit#6940
* chore(deps): update verify to 33.2.0 by @​thomhurst in
thomhurst/TUnit#6943
* chore(deps): update dependency awssdk.sqs to 4.0.100.15 by @​thomhurst
in thomhurst/TUnit#6944

## New Contributors
* @​zion-sati made their first contribution in
thomhurst/TUnit#6930

**Full Changelog**:
thomhurst/TUnit@v1.72.4...v1.72.10

## 1.72.4

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

## What's Changed
### Other Changes
* fix(source-gen): stop parameter resolver keeping every non-public
test-class method (IL2111) by @​thomhurst in
thomhurst/TUnit#6937
### Dependencies
* chore(deps): update tunit to 1.72.0 by @​thomhurst in
thomhurst/TUnit#6934


**Full Changelog**:
thomhurst/TUnit@v1.72.0...v1.72.4

## 1.72.0

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

## What's Changed
### Other Changes
* perf(source-gen): resolve parameter reflection info through a shared
runtime helper by @​thomhurst in
thomhurst/TUnit#6923
* perf(analyzers): trim remaining analyzer hot-path symbol lookups and
binds by @​thomhurst in thomhurst/TUnit#6928
* perf(mocks): move shared MockCall wrapper plumbing into runtime base
classes by @​thomhurst in thomhurst/TUnit#6929
* perf(source-gen): close incremental caching gaps in static property
and property injection generators by @​thomhurst in
thomhurst/TUnit#6925
* perf(source-gen): stop InfrastructureGenerator pinning an old
Compilation by @​thomhurst in
thomhurst/TUnit#6926
* perf(assertions-analyzers): cache assertion symbols and cut per-call
work by @​thomhurst in thomhurst/TUnit#6927
* perf(source-gen): emit hooks per class with direct, non-async bodies
by @​thomhurst in thomhurst/TUnit#6924
* test: fix flaky ObjectInitializer continuation-thread test by
@​thomhurst in thomhurst/TUnit#6932
* fix: CI flakes from leaked hook contexts, ActivityCollector race and
Repro5700 rendezvous by @​thomhurst in
thomhurst/TUnit#6933
* fix(aspnetcore): honor WebApplicationFactoryClientOptions in
CreateClient by @​thomhurst in
thomhurst/TUnit#6931
### Dependencies
* chore(deps): update tunit to 1.71.0 by @​thomhurst in
thomhurst/TUnit#6920


**Full Changelog**:
thomhurst/TUnit@v1.71.0...v1.72.0

## 1.71.0

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

## What's Changed
### Other Changes
* perf: lighter per-test trace bookkeeping for the HTML report (-12%
allocations at 10k tests) by @​thomhurst in
thomhurst/TUnit#6910
* perf(html-report): parallel report serialization + optimized hot
writers (-26% end-of-session time) by @​thomhurst in
thomhurst/TUnit#6911
* perf: emit source-generated test types after user code (Defender scan
5s → 0.2s at 10k tests) by @​thomhurst in
thomhurst/TUnit#6908
* perf(source-gen): bound generated test-entry methods (data-driven
startup JIT -45%) by @​thomhurst in
thomhurst/TUnit#6909
* fix: avoid blocking waiting callers during IAsyncInitializer
initialization by @​Sing303 in
thomhurst/TUnit#6906
* perf(analyzers): cut binding and symbol lookups in analyzer hot paths
(TUnit.Analyzers -89% on TestProject) by @​thomhurst in
thomhurst/TUnit#6917
* fix(source-gen): model equality covers every emitted field;
infrastructure refreshes on reference changes by @​thomhurst in
thomhurst/TUnit#6912
* perf(mocks): memoize generator discovery per compilation and decouple
emitted source from call-site locations by @​thomhurst in
thomhurst/TUnit#6913
* fix(packaging): skip the source generator when disabled and replace
the broken Polyfill injection by @​thomhurst in
thomhurst/TUnit#6915
* refactor(analyzers): address review feedback from #​6917 by
@​thomhurst in thomhurst/TUnit#6919
* perf(source-gen): remove whole-compilation scans from static property,
property injection and AOT converter generators by @​thomhurst in
thomhurst/TUnit#6914
* perf(assertions-source-gen): make assertion generators properly
incremental by @​thomhurst in
thomhurst/TUnit#6916
* perf(source-gen): make TestMetadataGenerator pipeline values equatable
by @​thomhurst in thomhurst/TUnit#6918
### Dependencies
* chore(deps): update dependency polyfill to 11.4.1 by @​thomhurst in
thomhurst/TUnit#6900
* chore(deps): update dependency polyfill to 11.4.1 by @​thomhurst in
thomhurst/TUnit#6899
* chore(deps): update dependency tunit.aspire to 1.7* by @​thomhurst in
thomhurst/TUnit#6901
* chore(deps): update tunit to 1.7* by @​thomhurst in
thomhurst/TUnit#6902
* chore(deps): update dependency coverlet.collector to 10.1.0 by
@​thomhurst in thomhurst/TUnit#6905
* chore(deps): update dependency nunit to v5 by @​thomhurst in
thomhurst/TUnit#6903


**Full Changelog**:
thomhurst/TUnit@v1.70.1...v1.71.0

## 1.70.1

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

## What's Changed
### Other Changes
* fix: don't run DedicatedThreadExecutor continuations inline on the
dedicated thread by @​thomhurst in
thomhurst/TUnit#6898


**Full Changelog**:
thomhurst/TUnit@v1.70.0...v1.70.1

## 1.70.0

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

## What's Changed
### Other Changes
* feat: clear parallel constraints and limiter during test registration
by @​thomhurst in thomhurst/TUnit#6897
* fix(mocks): emit valid lambdas for Task/ValueTask-returning delegate
mocks by @​thomhurst in thomhurst/TUnit#6896
### Dependencies
* chore(deps): update tunit to 1.69.24 by @​thomhurst in
thomhurst/TUnit#6893


**Full Changelog**:
thomhurst/TUnit@v1.69.24...v1.70.0

## 1.69.24

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

## What's Changed
### Other Changes
* fix: skip Ctrl+C handling where Console.CancelKeyPress is unsupported
by @​glennawatson in thomhurst/TUnit#6889
### Dependencies
* chore(deps): update verify to 33.1.5 by @​thomhurst in
thomhurst/TUnit#6891
* chore(deps): update tunit to 1.69.21 by @​thomhurst in
thomhurst/TUnit#6890


**Full Changelog**:
thomhurst/TUnit@v1.69.21...v1.69.24

## 1.69.21

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

## What's Changed
### Other Changes
* fix: preserve JUnit results after session cancellation by @​Sing303 in
thomhurst/TUnit#6882
* feat: warn when setup hooks pass the test execution token by @​Sing303
in thomhurst/TUnit#6883
* fix: complete DedicatedThreadExecutor tests only after CleanUp()
returns by @​glennawatson in
thomhurst/TUnit#6886
### Dependencies
* chore(deps): update tunit to 1.69.16 by @​thomhurst in
thomhurst/TUnit#6881

## New Contributors
* @​glennawatson made their first contribution in
thomhurst/TUnit#6886

**Full Changelog**:
thomhurst/TUnit@v1.69.16...v1.69.21

## 1.69.16

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

## What's Changed
### Other Changes
* fix: preserve TRX results when session cleanup fails by @​Sing303 in
thomhurst/TUnit#6879
### Dependencies
* chore(deps): update tunit to 1.69.0 by @​thomhurst in
thomhurst/TUnit#6864
* chore(deps): update dependency messagepack to 3.1.10 by @​thomhurst in
thomhurst/TUnit#6866
* chore(deps): update dependency dompurify to v3.4.16 by @​thomhurst in
thomhurst/TUnit#6867
* chore(deps): update dependency serialize-javascript to v7.1.2 by
@​thomhurst in thomhurst/TUnit#6868
* chore(deps): update dependency azure.data.tables to 12.13.0 by
@​thomhurst in thomhurst/TUnit#6870
* chore(deps): update dependency microsoft.playwright to 1.63.0 by
@​thomhurst in thomhurst/TUnit#6871
* chore(deps): update verify to 33.1.2 by @​thomhurst in
thomhurst/TUnit#6872
* chore(deps): update dependency verify.tool to v0.9.2 by @​thomhurst in
thomhurst/TUnit#6873
* chore(deps): update verify to 33.1.3 by @​thomhurst in
thomhurst/TUnit#6874
* chore(deps): update verify to 33.1.4 by @​thomhurst in
thomhurst/TUnit#6876
* chore(deps): update dependency moq to 4.21.0 by @​thomhurst in
thomhurst/TUnit#6877
* chore(deps): bump image-size from 2.0.2 to 2.0.4 in /docs by
@​dependabot[bot] in thomhurst/TUnit#6878

## New Contributors
* @​Sing303 made their first contribution in
thomhurst/TUnit#6879

**Full Changelog**:
thomhurst/TUnit@v1.69.0...v1.69.16

## 1.69.0

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

## What's Changed
### Other Changes
* feat(templates): add enableDotCover flag (#​6714) by @​ForNeVeR in
thomhurst/TUnit#6844
* fix: don't request semantic models for attribute syntax from other
compilations (DevKit crash) by @​thomhurst in
thomhurst/TUnit#6855
* fix(ci): restore net472 PublicAPI tests on Windows by @​thomhurst in
thomhurst/TUnit#6857
* perf(html-report): stream report JSON through pooled chunks and
overlap sidecar serialization by @​thomhurst in
thomhurst/TUnit#6860
* chore(renovate): cap Microsoft.Build packages below 18.10.0 by
@​thomhurst in thomhurst/TUnit#6863
* perf: shrink generated per-class test source static constructors (~40%
less startup JIT) by @​thomhurst in
thomhurst/TUnit#6859
* refactor: remove unreachable decimal source-text path from
GenerateAttributeInstantiation by @​thomhurst in
thomhurst/TUnit#6856
* perf: cut per-test allocations in discovery and execution (-61% at 10k
tests) by @​thomhurst in thomhurst/TUnit#6861
* perf: stop hashing per-test event receivers during registration
(data-driven tests 2.9x faster at 10k) by @​thomhurst in
thomhurst/TUnit#6858
* perf(analyzers): cut TUnit analyzer build time ~60% on large test
projects by @​thomhurst in thomhurst/TUnit#6862
### Dependencies
* chore(deps): update opentelemetry to 1.19.0 by @​thomhurst in
thomhurst/TUnit#6838
* chore(deps): update dependency opentelemetry.instrumentation.runtime
to 1.19.0 by @​thomhurst in thomhurst/TUnit#6840
* chore(deps): update tunit to 1.68.17 by @​thomhurst in
thomhurst/TUnit#6839
* chore(deps): update verify to 33.1.0 by @​thomhurst in
thomhurst/TUnit#6843
* chore(deps): update verify to 33.1.1 by @​thomhurst in
thomhurst/TUnit#6847
* chore(deps): update opentelemetry to 1.19.1 by @​thomhurst in
thomhurst/TUnit#6850
* chore(deps): update dependency grpc.core.api to 2.84.0 by @​thomhurst
in thomhurst/TUnit#6851
* chore(deps): update dependency stackexchange.redis to 3.3.1 by
@​thomhurst in thomhurst/TUnit#6853
* chore(deps): update dependency polyfill to 11.4.0 by @​thomhurst in
thomhurst/TUnit#6841
* chore(deps): update dependency polyfill to 11.4.0 by @​thomhurst in
thomhurst/TUnit#6842

## New Contributors
* @​ForNeVeR made their first contribution in
thomhurst/TUnit#6844

**Full Changelog**:
thomhurst/TUnit@v1.68.17...v1.69.0

## 1.68.17

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

## What's Changed
### Other Changes
* fix(mocks): emit init accessors for init-only properties and indexers
by @​thomhurst in thomhurst/TUnit#6833
* fix(mocks): let one type be mocked regularly and wrapped in one
compilation by @​thomhurst in
thomhurst/TUnit#6835
* fix(mocks): keep editors in sync with publicized project references
(#​6836) by @​thomhurst in thomhurst/TUnit#6837
### Dependencies
* chore(deps): update tunit to 1.68.4 by @​thomhurst in
thomhurst/TUnit#6824
* chore(deps): update mstest to 4.4.1 by @​thomhurst in
thomhurst/TUnit#6825
* chore(deps): update microsoft.testing by @​thomhurst in
thomhurst/TUnit#6717
* chore(deps): update verify to v33 by @​thomhurst in
thomhurst/TUnit#6794
* chore(deps): update dependency stackexchange.redis to 3.2.15 by
@​thomhurst in thomhurst/TUnit#6827
* chore(deps): update dependency messagepack to 3.1.9 by @​thomhurst in
thomhurst/TUnit#6828
* chore(deps): update dependency stackexchange.redis to 3.3.0 by
@​thomhurst in thomhurst/TUnit#6831
* chore(deps): update opentelemetry to 1.19.0 by @​thomhurst in
thomhurst/TUnit#6832


**Full Changelog**:
thomhurst/TUnit@v1.68.4...v1.68.17

Commits viewable in [compare
view](thomhurst/TUnit@v1.68.4...v1.72.10).
</details>

Updated [TUnit.Core](https://github.com/thomhurst/TUnit) from 1.68.4 to
1.72.10.

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

_Sourced from [TUnit.Core's
releases](https://github.com/thomhurst/TUnit/releases)._

## 1.72.10

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

## What's Changed
### Other Changes
* fix(source-gen): adapt ValueTask<T> test results by @​zion-sati in
thomhurst/TUnit#6930
### Dependencies
* chore(deps): update tunit to 1.72.4 by @​thomhurst in
thomhurst/TUnit#6941
* chore(deps): update aspire to 13.6.0 by @​thomhurst in
thomhurst/TUnit#6940
* chore(deps): update verify to 33.2.0 by @​thomhurst in
thomhurst/TUnit#6943
* chore(deps): update dependency awssdk.sqs to 4.0.100.15 by @​thomhurst
in thomhurst/TUnit#6944

## New Contributors
* @​zion-sati made their first contribution in
thomhurst/TUnit#6930

**Full Changelog**:
thomhurst/TUnit@v1.72.4...v1.72.10

## 1.72.4

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

## What's Changed
### Other Changes
* fix(source-gen): stop parameter resolver keeping every non-public
test-class method (IL2111) by @​thomhurst in
thomhurst/TUnit#6937
### Dependencies
* chore(deps): update tunit to 1.72.0 by @​thomhurst in
thomhurst/TUnit#6934


**Full Changelog**:
thomhurst/TUnit@v1.72.0...v1.72.4

## 1.72.0

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

## What's Changed
### Other Changes
* perf(source-gen): resolve parameter reflection info through a shared
runtime helper by @​thomhurst in
thomhurst/TUnit#6923
* perf(analyzers): trim remaining analyzer hot-path symbol lookups and
binds by @​thomhurst in thomhurst/TUnit#6928
* perf(mocks): move shared MockCall wrapper plumbing into runtime base
classes by @​thomhurst in thomhurst/TUnit#6929
* perf(source-gen): close incremental caching gaps in static property
and property injection generators by @​thomhurst in
thomhurst/TUnit#6925
* perf(source-gen): stop InfrastructureGenerator pinning an old
Compilation by @​thomhurst in
thomhurst/TUnit#6926
* perf(assertions-analyzers): cache assertion symbols and cut per-call
work by @​thomhurst in thomhurst/TUnit#6927
* perf(source-gen): emit hooks per class with direct, non-async bodies
by @​thomhurst in thomhurst/TUnit#6924
* test: fix flaky ObjectInitializer continuation-thread test by
@​thomhurst in thomhurst/TUnit#6932
* fix: CI flakes from leaked hook contexts, ActivityCollector race and
Repro5700 rendezvous by @​thomhurst in
thomhurst/TUnit#6933
* fix(aspnetcore): honor WebApplicationFactoryClientOptions in
CreateClient by @​thomhurst in
thomhurst/TUnit#6931
### Dependencies
* chore(deps): update tunit to 1.71.0 by @​thomhurst in
thomhurst/TUnit#6920


**Full Changelog**:
thomhurst/TUnit@v1.71.0...v1.72.0

## 1.71.0

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

## What's Changed
### Other Changes
* perf: lighter per-test trace bookkeeping for the HTML report (-12%
allocations at 10k tests) by @​thomhurst in
thomhurst/TUnit#6910
* perf(html-report): parallel report serialization + optimized hot
writers (-26% end-of-session time) by @​thomhurst in
thomhurst/TUnit#6911
* perf: emit source-generated test types after user code (Defender scan
5s → 0.2s at 10k tests) by @​thomhurst in
thomhurst/TUnit#6908
* perf(source-gen): bound generated test-entry methods (data-driven
startup JIT -45%) by @​thomhurst in
thomhurst/TUnit#6909
* fix: avoid blocking waiting callers during IAsyncInitializer
initialization by @​Sing303 in
thomhurst/TUnit#6906
* perf(analyzers): cut binding and symbol lookups in analyzer hot paths
(TUnit.Analyzers -89% on TestProject) by @​thomhurst in
thomhurst/TUnit#6917
* fix(source-gen): model equality covers every emitted field;
infrastructure refreshes on reference changes by @​thomhurst in
thomhurst/TUnit#6912
* perf(mocks): memoize generator discovery per compilation and decouple
emitted source from call-site locations by @​thomhurst in
thomhurst/TUnit#6913
* fix(packaging): skip the source generator when disabled and replace
the broken Polyfill injection by @​thomhurst in
thomhurst/TUnit#6915
* refactor(analyzers): address review feedback from #​6917 by
@​thomhurst in thomhurst/TUnit#6919
* perf(source-gen): remove whole-compilation scans from static property,
property injection and AOT converter generators by @​thomhurst in
thomhurst/TUnit#6914
* perf(assertions-source-gen): make assertion generators properly
incremental by @​thomhurst in
thomhurst/TUnit#6916
* perf(source-gen): make TestMetadataGenerator pipeline values equatable
by @​thomhurst in thomhurst/TUnit#6918
### Dependencies
* chore(deps): update dependency polyfill to 11.4.1 by @​thomhurst in
thomhurst/TUnit#6900
* chore(deps): update dependency polyfill to 11.4.1 by @​thomhurst in
thomhurst/TUnit#6899
* chore(deps): update dependency tunit.aspire to 1.7* by @​thomhurst in
thomhurst/TUnit#6901
* chore(deps): update tunit to 1.7* by @​thomhurst in
thomhurst/TUnit#6902
* chore(deps): update dependency coverlet.collector to 10.1.0 by
@​thomhurst in thomhurst/TUnit#6905
* chore(deps): update dependency nunit to v5 by @​thomhurst in
thomhurst/TUnit#6903


**Full Changelog**:
thomhurst/TUnit@v1.70.1...v1.71.0

## 1.70.1

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

## What's Changed
### Other Changes
* fix: don't run DedicatedThreadExecutor continuations inline on the
dedicated thread by @​thomhurst in
thomhurst/TUnit#6898


**Full Changelog**:
thomhurst/TUnit@v1.70.0...v1.70.1

## 1.70.0

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

## What's Changed
### Other Changes
* feat: clear parallel constraints and limiter during test registration
by @​thomhurst in thomhurst/TUnit#6897
* fix(mocks): emit valid lambdas for Task/ValueTask-returning delegate
mocks by @​thomhurst in thomhurst/TUnit#6896
### Dependencies
* chore(deps): update tunit to 1.69.24 by @​thomhurst in
thomhurst/TUnit#6893


**Full Changelog**:
thomhurst/TUnit@v1.69.24...v1.70.0

## 1.69.24

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

## What's Changed
### Other Changes
* fix: skip Ctrl+C handling where Console.CancelKeyPress is unsupported
by @​glennawatson in thomhurst/TUnit#6889
### Dependencies
* chore(deps): update verify to 33.1.5 by @​thomhurst in
thomhurst/TUnit#6891
* chore(deps): update tunit to 1.69.21 by @​thomhurst in
thomhurst/TUnit#6890


**Full Changelog**:
thomhurst/TUnit@v1.69.21...v1.69.24

## 1.69.21

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

## What's Changed
### Other Changes
* fix: preserve JUnit results after session cancellation by @​Sing303 in
thomhurst/TUnit#6882
* feat: warn when setup hooks pass the test execution token by @​Sing303
in thomhurst/TUnit#6883
* fix: complete DedicatedThreadExecutor tests only after CleanUp()
returns by @​glennawatson in
thomhurst/TUnit#6886
### Dependencies
* chore(deps): update tunit to 1.69.16 by @​thomhurst in
thomhurst/TUnit#6881

## New Contributors
* @​glennawatson made their first contribution in
thomhurst/TUnit#6886

**Full Changelog**:
thomhurst/TUnit@v1.69.16...v1.69.21

## 1.69.16

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

## What's Changed
### Other Changes
* fix: preserve TRX results when session cleanup fails by @​Sing303 in
thomhurst/TUnit#6879
### Dependencies
* chore(deps): update tunit to 1.69.0 by @​thomhurst in
thomhurst/TUnit#6864
* chore(deps): update dependency messagepack to 3.1.10 by @​thomhurst in
thomhurst/TUnit#6866
* chore(deps): update dependency dompurify to v3.4.16 by @​thomhurst in
thomhurst/TUnit#6867
* chore(deps): update dependency serialize-javascript to v7.1.2 by
@​thomhurst in thomhurst/TUnit#6868
* chore(deps): update dependency azure.data.tables to 12.13.0 by
@​thomhurst in thomhurst/TUnit#6870
* chore(deps): update dependency microsoft.playwright to 1.63.0 by
@​thomhurst in thomhurst/TUnit#6871
* chore(deps): update verify to 33.1.2 by @​thomhurst in
thomhurst/TUnit#6872
* chore(deps): update dependency verify.tool to v0.9.2 by @​thomhurst in
thomhurst/TUnit#6873
* chore(deps): update verify to 33.1.3 by @​thomhurst in
thomhurst/TUnit#6874
* chore(deps): update verify to 33.1.4 by @​thomhurst in
thomhurst/TUnit#6876
* chore(deps): update dependency moq to 4.21.0 by @​thomhurst in
thomhurst/TUnit#6877
* chore(deps): bump image-size from 2.0.2 to 2.0.4 in /docs by
@​dependabot[bot] in thomhurst/TUnit#6878

## New Contributors
* @​Sing303 made their first contribution in
thomhurst/TUnit#6879

**Full Changelog**:
thomhurst/TUnit@v1.69.0...v1.69.16

## 1.69.0

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

## What's Changed
### Other Changes
* feat(templates): add enableDotCover flag (#​6714) by @​ForNeVeR in
thomhurst/TUnit#6844
* fix: don't request semantic models for attribute syntax from other
compilations (DevKit crash) by @​thomhurst in
thomhurst/TUnit#6855
* fix(ci): restore net472 PublicAPI tests on Windows by @​thomhurst in
thomhurst/TUnit#6857
* perf(html-report): stream report JSON through pooled chunks and
overlap sidecar serialization by @​thomhurst in
thomhurst/TUnit#6860
* chore(renovate): cap Microsoft.Build packages below 18.10.0 by
@​thomhurst in thomhurst/TUnit#6863
* perf: shrink generated per-class test source static constructors (~40%
less startup JIT) by @​thomhurst in
thomhurst/TUnit#6859
* refactor: remove unreachable decimal source-text path from
GenerateAttributeInstantiation by @​thomhurst in
thomhurst/TUnit#6856
* perf: cut per-test allocations in discovery and execution (-61% at 10k
tests) by @​thomhurst in thomhurst/TUnit#6861
* perf: stop hashing per-test event receivers during registration
(data-driven tests 2.9x faster at 10k) by @​thomhurst in
thomhurst/TUnit#6858
* perf(analyzers): cut TUnit analyzer build time ~60% on large test
projects by @​thomhurst in thomhurst/TUnit#6862
### Dependencies
* chore(deps): update opentelemetry to 1.19.0 by @​thomhurst in
thomhurst/TUnit#6838
* chore(deps): update dependency opentelemetry.instrumentation.runtime
to 1.19.0 by @​thomhurst in thomhurst/TUnit#6840
* chore(deps): update tunit to 1.68.17 by @​thomhurst in
thomhurst/TUnit#6839
* chore(deps): update verify to 33.1.0 by @​thomhurst in
thomhurst/TUnit#6843
* chore(deps): update verify to 33.1.1 by @​thomhurst in
thomhurst/TUnit#6847
* chore(deps): update opentelemetry to 1.19.1 by @​thomhurst in
thomhurst/TUnit#6850
* chore(deps): update dependency grpc.core.api to 2.84.0 by @​thomhurst
in thomhurst/TUnit#6851
* chore(deps): update dependency stackexchange.redis to 3.3.1 by
@​thomhurst in thomhurst/TUnit#6853
* chore(deps): update dependency polyfill to 11.4.0 by @​thomhurst in
thomhurst/TUnit#6841
* chore(deps): update dependency polyfill to 11.4.0 by @​thomhurst in
thomhurst/TUnit#6842

## New Contributors
* @​ForNeVeR made their first contribution in
thomhurst/TUnit#6844

**Full Changelog**:
thomhurst/TUnit@v1.68.17...v1.69.0

## 1.68.17

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

## What's Changed
### Other Changes
* fix(mocks): emit init accessors for init-only properties and indexers
by @​thomhurst in thomhurst/TUnit#6833
* fix(mocks): let one type be mocked regularly and wrapped in one
compilation by @​thomhurst in
thomhurst/TUnit#6835
* fix(mocks): keep editors in sync with publicized project references
(#​6836) by @​thomhurst in thomhurst/TUnit#6837
### Dependencies
* chore(deps): update tunit to 1.68.4 by @​thomhurst in
thomhurst/TUnit#6824
* chore(deps): update mstest to 4.4.1 by @​thomhurst in
thomhurst/TUnit#6825
* chore(deps): update microsoft.testing by @​thomhurst in
thomhurst/TUnit#6717
* chore(deps): update verify to v33 by @​thomhurst in
thomhurst/TUnit#6794
* chore(deps): update dependency stackexchange.redis to 3.2.15 by
@​thomhurst in thomhurst/TUnit#6827
* chore(deps): update dependency messagepack to 3.1.9 by @​thomhurst in
thomhurst/TUnit#6828
* chore(deps): update dependency stackexchange.redis to 3.3.0 by
@​thomhurst in thomhurst/TUnit#6831
* chore(deps): update opentelemetry to 1.19.0 by @​thomhurst in
thomhurst/TUnit#6832


**Full Changelog**:
thomhurst/TUnit@v1.68.4...v1.68.17

Commits viewable in [compare
view](thomhurst/TUnit@v1.68.4...v1.72.10).
</details>

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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
github-actions Bot pushed a commit to IntelliTect/CodingGuidelines that referenced this pull request Oct 5, 2026
Updated [TUnit.Core](https://github.com/thomhurst/TUnit) from 1.68.17 to
1.72.16.

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

_Sourced from [TUnit.Core's
releases](https://github.com/thomhurst/TUnit/releases)._

## 1.72.16

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

## What's Changed
### Other Changes
* docs: add Moq, NSubstitute, and FakeItEasy migration guides for
TUnit.Mocks by @​thomhurst in
thomhurst/TUnit#6951
### Dependencies
* chore(deps): update dependency azure.storage.blobs to 12.30.0 by
@​thomhurst in thomhurst/TUnit#6945
* chore(deps): update tunit to 1.72.10 by @​thomhurst in
thomhurst/TUnit#6946
* chore(deps): update dependency mockolate to 3.5.2 by @​thomhurst in
thomhurst/TUnit#6949


**Full Changelog**:
thomhurst/TUnit@v1.72.10...v1.72.16

## 1.72.10

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

## What's Changed
### Other Changes
* fix(source-gen): adapt ValueTask<T> test results by @​zion-sati in
thomhurst/TUnit#6930
### Dependencies
* chore(deps): update tunit to 1.72.4 by @​thomhurst in
thomhurst/TUnit#6941
* chore(deps): update aspire to 13.6.0 by @​thomhurst in
thomhurst/TUnit#6940
* chore(deps): update verify to 33.2.0 by @​thomhurst in
thomhurst/TUnit#6943
* chore(deps): update dependency awssdk.sqs to 4.0.100.15 by @​thomhurst
in thomhurst/TUnit#6944

## New Contributors
* @​zion-sati made their first contribution in
thomhurst/TUnit#6930

**Full Changelog**:
thomhurst/TUnit@v1.72.4...v1.72.10

## 1.72.4

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

## What's Changed
### Other Changes
* fix(source-gen): stop parameter resolver keeping every non-public
test-class method (IL2111) by @​thomhurst in
thomhurst/TUnit#6937
### Dependencies
* chore(deps): update tunit to 1.72.0 by @​thomhurst in
thomhurst/TUnit#6934


**Full Changelog**:
thomhurst/TUnit@v1.72.0...v1.72.4

## 1.72.0

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

## What's Changed
### Other Changes
* perf(source-gen): resolve parameter reflection info through a shared
runtime helper by @​thomhurst in
thomhurst/TUnit#6923
* perf(analyzers): trim remaining analyzer hot-path symbol lookups and
binds by @​thomhurst in thomhurst/TUnit#6928
* perf(mocks): move shared MockCall wrapper plumbing into runtime base
classes by @​thomhurst in thomhurst/TUnit#6929
* perf(source-gen): close incremental caching gaps in static property
and property injection generators by @​thomhurst in
thomhurst/TUnit#6925
* perf(source-gen): stop InfrastructureGenerator pinning an old
Compilation by @​thomhurst in
thomhurst/TUnit#6926
* perf(assertions-analyzers): cache assertion symbols and cut per-call
work by @​thomhurst in thomhurst/TUnit#6927
* perf(source-gen): emit hooks per class with direct, non-async bodies
by @​thomhurst in thomhurst/TUnit#6924
* test: fix flaky ObjectInitializer continuation-thread test by
@​thomhurst in thomhurst/TUnit#6932
* fix: CI flakes from leaked hook contexts, ActivityCollector race and
Repro5700 rendezvous by @​thomhurst in
thomhurst/TUnit#6933
* fix(aspnetcore): honor WebApplicationFactoryClientOptions in
CreateClient by @​thomhurst in
thomhurst/TUnit#6931
### Dependencies
* chore(deps): update tunit to 1.71.0 by @​thomhurst in
thomhurst/TUnit#6920


**Full Changelog**:
thomhurst/TUnit@v1.71.0...v1.72.0

## 1.71.0

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

## What's Changed
### Other Changes
* perf: lighter per-test trace bookkeeping for the HTML report (-12%
allocations at 10k tests) by @​thomhurst in
thomhurst/TUnit#6910
* perf(html-report): parallel report serialization + optimized hot
writers (-26% end-of-session time) by @​thomhurst in
thomhurst/TUnit#6911
* perf: emit source-generated test types after user code (Defender scan
5s → 0.2s at 10k tests) by @​thomhurst in
thomhurst/TUnit#6908
* perf(source-gen): bound generated test-entry methods (data-driven
startup JIT -45%) by @​thomhurst in
thomhurst/TUnit#6909
* fix: avoid blocking waiting callers during IAsyncInitializer
initialization by @​Sing303 in
thomhurst/TUnit#6906
* perf(analyzers): cut binding and symbol lookups in analyzer hot paths
(TUnit.Analyzers -89% on TestProject) by @​thomhurst in
thomhurst/TUnit#6917
* fix(source-gen): model equality covers every emitted field;
infrastructure refreshes on reference changes by @​thomhurst in
thomhurst/TUnit#6912
* perf(mocks): memoize generator discovery per compilation and decouple
emitted source from call-site locations by @​thomhurst in
thomhurst/TUnit#6913
* fix(packaging): skip the source generator when disabled and replace
the broken Polyfill injection by @​thomhurst in
thomhurst/TUnit#6915
* refactor(analyzers): address review feedback from #​6917 by
@​thomhurst in thomhurst/TUnit#6919
* perf(source-gen): remove whole-compilation scans from static property,
property injection and AOT converter generators by @​thomhurst in
thomhurst/TUnit#6914
* perf(assertions-source-gen): make assertion generators properly
incremental by @​thomhurst in
thomhurst/TUnit#6916
* perf(source-gen): make TestMetadataGenerator pipeline values equatable
by @​thomhurst in thomhurst/TUnit#6918
### Dependencies
* chore(deps): update dependency polyfill to 11.4.1 by @​thomhurst in
thomhurst/TUnit#6900
* chore(deps): update dependency polyfill to 11.4.1 by @​thomhurst in
thomhurst/TUnit#6899
* chore(deps): update dependency tunit.aspire to 1.7* by @​thomhurst in
thomhurst/TUnit#6901
* chore(deps): update tunit to 1.7* by @​thomhurst in
thomhurst/TUnit#6902
* chore(deps): update dependency coverlet.collector to 10.1.0 by
@​thomhurst in thomhurst/TUnit#6905
* chore(deps): update dependency nunit to v5 by @​thomhurst in
thomhurst/TUnit#6903


**Full Changelog**:
thomhurst/TUnit@v1.70.1...v1.71.0

## 1.70.1

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

## What's Changed
### Other Changes
* fix: don't run DedicatedThreadExecutor continuations inline on the
dedicated thread by @​thomhurst in
thomhurst/TUnit#6898


**Full Changelog**:
thomhurst/TUnit@v1.70.0...v1.70.1

## 1.70.0

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

## What's Changed
### Other Changes
* feat: clear parallel constraints and limiter during test registration
by @​thomhurst in thomhurst/TUnit#6897
* fix(mocks): emit valid lambdas for Task/ValueTask-returning delegate
mocks by @​thomhurst in thomhurst/TUnit#6896
### Dependencies
* chore(deps): update tunit to 1.69.24 by @​thomhurst in
thomhurst/TUnit#6893


**Full Changelog**:
thomhurst/TUnit@v1.69.24...v1.70.0

## 1.69.24

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

## What's Changed
### Other Changes
* fix: skip Ctrl+C handling where Console.CancelKeyPress is unsupported
by @​glennawatson in thomhurst/TUnit#6889
### Dependencies
* chore(deps): update verify to 33.1.5 by @​thomhurst in
thomhurst/TUnit#6891
* chore(deps): update tunit to 1.69.21 by @​thomhurst in
thomhurst/TUnit#6890


**Full Changelog**:
thomhurst/TUnit@v1.69.21...v1.69.24

## 1.69.21

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

## What's Changed
### Other Changes
* fix: preserve JUnit results after session cancellation by @​Sing303 in
thomhurst/TUnit#6882
* feat: warn when setup hooks pass the test execution token by @​Sing303
in thomhurst/TUnit#6883
* fix: complete DedicatedThreadExecutor tests only after CleanUp()
returns by @​glennawatson in
thomhurst/TUnit#6886
### Dependencies
* chore(deps): update tunit to 1.69.16 by @​thomhurst in
thomhurst/TUnit#6881

## New Contributors
* @​glennawatson made their first contribution in
thomhurst/TUnit#6886

**Full Changelog**:
thomhurst/TUnit@v1.69.16...v1.69.21

## 1.69.16

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

## What's Changed
### Other Changes
* fix: preserve TRX results when session cleanup fails by @​Sing303 in
thomhurst/TUnit#6879
### Dependencies
* chore(deps): update tunit to 1.69.0 by @​thomhurst in
thomhurst/TUnit#6864
* chore(deps): update dependency messagepack to 3.1.10 by @​thomhurst in
thomhurst/TUnit#6866
* chore(deps): update dependency dompurify to v3.4.16 by @​thomhurst in
thomhurst/TUnit#6867
* chore(deps): update dependency serialize-javascript to v7.1.2 by
@​thomhurst in thomhurst/TUnit#6868
* chore(deps): update dependency azure.data.tables to 12.13.0 by
@​thomhurst in thomhurst/TUnit#6870
* chore(deps): update dependency microsoft.playwright to 1.63.0 by
@​thomhurst in thomhurst/TUnit#6871
* chore(deps): update verify to 33.1.2 by @​thomhurst in
thomhurst/TUnit#6872
* chore(deps): update dependency verify.tool to v0.9.2 by @​thomhurst in
thomhurst/TUnit#6873
* chore(deps): update verify to 33.1.3 by @​thomhurst in
thomhurst/TUnit#6874
* chore(deps): update verify to 33.1.4 by @​thomhurst in
thomhurst/TUnit#6876
* chore(deps): update dependency moq to 4.21.0 by @​thomhurst in
thomhurst/TUnit#6877
* chore(deps): bump image-size from 2.0.2 to 2.0.4 in /docs by
@​dependabot[bot] in thomhurst/TUnit#6878

## New Contributors
* @​Sing303 made their first contribution in
thomhurst/TUnit#6879

**Full Changelog**:
thomhurst/TUnit@v1.69.0...v1.69.16

## 1.69.0

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

## What's Changed
### Other Changes
* feat(templates): add enableDotCover flag (#​6714) by @​ForNeVeR in
thomhurst/TUnit#6844
* fix: don't request semantic models for attribute syntax from other
compilations (DevKit crash) by @​thomhurst in
thomhurst/TUnit#6855
* fix(ci): restore net472 PublicAPI tests on Windows by @​thomhurst in
thomhurst/TUnit#6857
* perf(html-report): stream report JSON through pooled chunks and
overlap sidecar serialization by @​thomhurst in
thomhurst/TUnit#6860
* chore(renovate): cap Microsoft.Build packages below 18.10.0 by
@​thomhurst in thomhurst/TUnit#6863
* perf: shrink generated per-class test source static constructors (~40%
less startup JIT) by @​thomhurst in
thomhurst/TUnit#6859
* refactor: remove unreachable decimal source-text path from
GenerateAttributeInstantiation by @​thomhurst in
thomhurst/TUnit#6856
* perf: cut per-test allocations in discovery and execution (-61% at 10k
tests) by @​thomhurst in thomhurst/TUnit#6861
* perf: stop hashing per-test event receivers during registration
(data-driven tests 2.9x faster at 10k) by @​thomhurst in
thomhurst/TUnit#6858
* perf(analyzers): cut TUnit analyzer build time ~60% on large test
projects by @​thomhurst in thomhurst/TUnit#6862
### Dependencies
* chore(deps): update opentelemetry to 1.19.0 by @​thomhurst in
thomhurst/TUnit#6838
* chore(deps): update dependency opentelemetry.instrumentation.runtime
to 1.19.0 by @​thomhurst in thomhurst/TUnit#6840
* chore(deps): update tunit to 1.68.17 by @​thomhurst in
thomhurst/TUnit#6839
* chore(deps): update verify to 33.1.0 by @​thomhurst in
thomhurst/TUnit#6843
* chore(deps): update verify to 33.1.1 by @​thomhurst in
thomhurst/TUnit#6847
* chore(deps): update opentelemetry to 1.19.1 by @​thomhurst in
thomhurst/TUnit#6850
* chore(deps): update dependency grpc.core.api to 2.84.0 by @​thomhurst
in thomhurst/TUnit#6851
* chore(deps): update dependency stackexchange.redis to 3.3.1 by
@​thomhurst in thomhurst/TUnit#6853
* chore(deps): update dependency polyfill to 11.4.0 by @​thomhurst in
thomhurst/TUnit#6841
* chore(deps): update dependency polyfill to 11.4.0 by @​thomhurst in
thomhurst/TUnit#6842

## New Contributors
* @​ForNeVeR made their first contribution in
thomhurst/TUnit#6844

**Full Changelog**:
thomhurst/TUnit@v1.68.17...v1.69.0

Commits viewable in [compare
view](thomhurst/TUnit@v1.68.17...v1.72.16).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=TUnit.Core&package-manager=nuget&previous-version=1.68.17&new-version=1.72.16)](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>
This was referenced Oct 5, 2026

This branch was successfully deployed

1 active deployment
Pull Requests — 86a7b335 Deployed Sep 29, 2026 by thomhurst via modularpipeline (ubuntu-latest) #19616
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant