Skip to content

chore(deps): update tunit to 1.32.0#2458

Open
thomhurst wants to merge 1 commit intomainfrom
renovate/tunit
Open

chore(deps): update tunit to 1.32.0#2458
thomhurst wants to merge 1 commit intomainfrom
renovate/tunit

Conversation

@thomhurst
Copy link
Copy Markdown
Owner

@thomhurst thomhurst commented Mar 21, 2026

This PR contains the following updates:

Package Change Age Confidence
TUnit 1.19.741.32.0 age confidence
TUnit.Assertions 1.19.741.32.0 age confidence
TUnit.Core 1.19.741.32.0 age confidence

Release Notes

thomhurst/TUnit (TUnit)

v1.32.0: 1.32.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.31.0...v1.32.0

v1.31.0: 1.31.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.30.8...v1.31.0

v1.30.8: 1.30.8

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.30.0...v1.30.8

v1.30.0: 1.30.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.29.0...v1.30.0

v1.29.0: 1.29.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.28.7...v1.29.0

v1.28.7: 1.28.7

What's Changed
Other Changes
  • fix: prevent StringBuilder race in console interceptor during parallel tests by @​thomhurst in #​5414
Dependencies

Full Changelog: thomhurst/TUnit@v1.28.5...v1.28.7

v1.28.5: 1.28.5

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.28.0...v1.28.5

v1.28.0: 1.28.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.27.0...v1.28.0

v1.27.0: 1.27.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.25.0...v1.27.0

v1.25.0: 1.25.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.24.31...v1.25.0

v1.24.31: 1.24.31

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.24.18...v1.24.31

v1.24.18: 1.24.18

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.24.13...v1.24.18

v1.24.13: 1.24.13

What's Changed
Other Changes
Dependencies
New Contributors

Full Changelog: thomhurst/TUnit@v1.24.0...v1.24.13

v1.24.0: 1.24.0

What's Changed
Other Changes
Dependencies
New Contributors

Full Changelog: thomhurst/TUnit@v1.23.7...v1.24.0

v1.23.7: 1.23.7

What's Changed
Other Changes
Dependencies
New Contributors

Full Changelog: thomhurst/TUnit@v1.22.19...v1.23.7

v1.22.19: 1.22.19

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.22.6...v1.22.19

v1.22.6: 1.22.6

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.22.3...v1.22.6

v1.22.3: 1.22.3

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.22.0...v1.22.3

v1.22.0: 1.22.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.21.30...v1.22.0

v1.21.30: 1.21.30

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.21.24...v1.21.30

v1.21.24: 1.21.24

What's Changed
Other Changes
  • Fix OpenTelemetry missing root span by reordering session activity lifecycle by @​Copilot in #​5245
Dependencies

Full Changelog: thomhurst/TUnit@v1.21.20...v1.21.24

v1.21.20: 1.21.20

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.21.6...v1.21.20

v1.21.6: 1.21.6

What's Changed
Other Changes
  • perf: replace object locks with Lock type for efficient synchronization by @​thomhurst in #​5219
  • perf: parallelize test metadata collection for source-generated tests by @​thomhurst in #​5221
  • perf: use GetOrAdd args overload to eliminate closure allocations in event receivers by @​thomhurst in #​5222
  • perf: self-contained TestEntry with consolidated switch invokers eliminates per-test JIT by @​thomhurst in #​5223
Dependencies

Full Changelog: thomhurst/TUnit@v1.21.0...v1.21.6

v1.21.0: 1.21.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.20.0...v1.21.0

v1.20.0: 1.20.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.19.74...v1.20.0


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

@thomhurst thomhurst added dependencies Pull requests that update a dependency file MINOR renovate-bot labels Mar 21, 2026
@thomhurst thomhurst enabled auto-merge (squash) March 21, 2026 14:12
Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review

This is a straightforward Renovate-generated dependency update bumping TUnit, TUnit.Assertions, and TUnit.Core from 1.19.741.20.0 in Directory.Packages.props.

Changes

  • All three TUnit packages are kept in sync at the same version, which is the correct approach for a suite of interdependent packages.

Notable changes in TUnit 1.20.0

  • Fix for inverted colors in HTML report ring chart (locale-dependent decimal formatting)
  • Fix nullable warnings when using Member() on nullable properties
  • IsEquivalentTo assertion added for Memory<T> and ReadOnlyMemory<T>
  • Fix for ConfigureTestConfiguration being invoked twice
  • ConfigureAppHost hook added to AspireFixture

None of these are breaking changes — they are bug fixes and additive features. The bump is a minor version (1.19.x1.20.0), but given the TUnit project's release cadence, this appears safe.

Assessment

The change is clean and minimal — only the three coordinated package versions are updated, nothing else. No concerns.

@thomhurst thomhurst changed the title chore(deps): update tunit to 1.20.0 chore(deps): update tunit to 1.21.0 Mar 22, 2026
Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated)

This PR has been updated since the previous review — the target version is now 1.21.0 (previously 1.20.0), so this bumps TUnit, TUnit.Assertions, and TUnit.Core from 1.19.741.21.0.

Previous review concerns addressed

The prior review had no concerns — this is an additive update on top of that.

What's new in 1.21.0 (on top of 1.20.0)

All changes are performance improvements with no API-breaking changes:

  • Reduced ConcurrentDictionary closure allocations in hot paths
  • Reduced async state machine overhead in test execution pipeline
  • Reduced allocations in EventReceiverOrchestrator and TestContextExtensions
  • Skip timeout machinery when no timeout configured
  • Reduced allocations and lock contention in ObjectTracker
  • Consolidate module initializers into single .cctor via partial class

These are purely internal perf improvements — no behavior changes, no breaking changes.

Assessment

The change remains clean and minimal. All three TUnit packages are kept in sync at 1.21.0, which is correct for this interdependent suite. The 1.21.0 release is pure performance work, making it a safe and beneficial upgrade. No concerns.

@thomhurst thomhurst changed the title chore(deps): update tunit to 1.21.0 chore(deps): update tunit to 1.21.6 Mar 23, 2026
Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated - 1.21.6)

This PR has been updated since the previous review — the target version is now 1.21.6 (previously reviewed at 1.21.0), bumping TUnit, TUnit.Assertions, and TUnit.Core from 1.19.741.21.6.

Previous review concerns addressed

The prior review had no concerns — this is an additive update on top of that.

What's new in 1.21.6 (on top of 1.21.0)

All changes are again focused on performance improvements with no API-breaking changes:

  • Replace object locks with the newer Lock type for more efficient synchronization (#5219)
  • Parallelize test metadata collection for source-generated tests (#5221)
  • Use GetOrAdd args overload to eliminate closure allocations in event receivers (#5222)
  • Self-contained TestEntry<T> with consolidated switch invokers to eliminate per-test JIT overhead (#5223)

These are purely internal performance improvements — no behavior changes, no breaking changes.

Assessment

The change remains clean and minimal. All three TUnit packages are kept in sync at 1.21.6, which is correct for this tightly coupled package suite. The 1.21.6 release continues the performance improvement trend from 1.21.0, making it a safe and beneficial upgrade. No concerns.

@thomhurst thomhurst changed the title chore(deps): update tunit to 1.21.6 chore(deps): update tunit to 1.21.20 Mar 24, 2026
Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated - 1.21.20)

This PR has been updated since the previous review — the target version is now 1.21.20 (previously reviewed at 1.21.6), bumping TUnit, TUnit.Assertions, and TUnit.Core from 1.19.741.21.20.

Previous review concerns addressed

The prior review had no concerns — this is a further additive update on top of that.

What's new in 1.21.20 (on top of 1.21.6)

Bug fixes:

  • Fix: respect TUnitImplicitUsings set in Directory.Build.props (#5225)
  • Fix: BeforeEvery/AfterEvery hooks for Class and Assembly not being executed (#5239) — this is a notable correctness fix

New features:

  • Covariant assertions for interfaces and non-sealed classes (#5226)
  • Support string-to-parseable type conversions in [Arguments] (#5227)
  • Add string length range assertions (#4935)

None of these are breaking changes — they are bug fixes and additive features.

Assessment

The change remains clean and minimal. All three TUnit packages are kept in sync at 1.21.20, which is correct for this tightly coupled package suite. The BeforeEvery/AfterEvery hook fix in particular is a meaningful correctness improvement worth picking up. No concerns.

@thomhurst thomhurst changed the title chore(deps): update tunit to 1.22.19 chore(deps): update tunit to 1.23.7 Mar 30, 2026
Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated - 1.23.7)

This PR has been updated since the previous review — the target version is now 1.23.7 (up from the previously reviewed 1.22.19), bumping TUnit, TUnit.Assertions, and TUnit.Core in Directory.Packages.props.

Change Summary

A single-file, three-line version bump generated by Renovate Bot:

- TUnit:            1.19.74 → 1.23.7
- TUnit.Assertions: 1.19.74 → 1.23.7
- TUnit.Core:       1.19.74 → 1.23.7

All three packages remain in sync at the same version, which is the correct pattern for this tightly coupled package family.

Previous review concerns addressed

No concerns were raised across the full review history covering 1.20.0 through 1.22.19. This is a further incremental update on top of those.

Notable changes in 1.22.19 → 1.23.7

1.22.19:

  • Performance: Lazily initialize optional MockEngine collections to reduce startup overhead
  • Fix mock generator not emitting TUnit.Mocks.Generated namespace — correctness fix

1.23.7:

  • Feature: HTML reporter now uses the results directory provided by Microsoft Testing Platform (HtmlReporter) — improves integration with MTP-compatible runners
  • Feature: Benchmarks added for Imposter and Mockolate mocking frameworks — no consumer impact
  • Analyzer: New TUnit0080 analyzer for missing polyfill types — may surface new build warnings/errors if polyfill types are absent, worth noting
  • Bug fix: Respect user-set TUnitImplicitUsings from Directory.Build.props — a correctness fix for projects that opt out of implicit usings via Directory.Build.props
  • Performance: Optimize TUnit.Mocks hot paths

One item to be aware of

The new TUnit0080 analyzer for missing polyfill types may emit diagnostics in this codebase if any required polyfill types are not present. This is unlikely to be a breaking change, but it is worth confirming that the build remains clean (no new warnings treated as errors) after this upgrade. Given that CI/automerge is enabled, this should be caught automatically.

Assessment

The change is clean, minimal, and correct. All three TUnit packages remain coordinated at 1.23.7, as expected. The changes in this range are performance improvements, bug fixes, and non-breaking feature additions — no breaking changes are indicated in the release notes. No concerns.

@thomhurst thomhurst changed the title chore(deps): update tunit to 1.23.7 chore(deps): update tunit to 1.24.0 Mar 30, 2026
@claude
Copy link
Copy Markdown

claude bot commented Mar 30, 2026

Code Review (Updated)

This PR has been updated since the previous review. The TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) are now being bumped from 1.19.74 to 1.24.0 (the prior review noted 1.22.19 as the target, so this PR has since been rebased/updated to a newer version).

Assessment: Looks Good

Change quality:

  • All three interdependent TUnit packages remain in sync at 1.24.0 — correct practice to avoid mixed-version issues.
  • The change is isolated to Directory.Packages.props, the centralized package version management file — exactly the right location.
  • This is a Renovate-generated MINOR bump with automerge enabled.

What's new since the previous review (1.22.19 → 1.24.0):

  • Performance: Optimized TUnit.Mocks hot paths (multiple PRs).
  • Bug fixes: System.Memory version conflict on .NET Framework (net462) resolved; CS0460/CS0122/CS0115 compiler errors when mocking concrete classes from external assemblies fixed.
  • New features: Parameterless Returns() and ReturnsAsync() for async mock methods; unified Mock.Of<T>() and Mock.OfPartial<T>() into a single API (with a cleaned-up public Mock API surface and removal of generic/untyped overloads).

Compatibility note: The refactoring of the Mock API surface in 1.24.0 (unifying Mock.Of<T>()/Mock.OfPartial<T>() and removing generic/untyped overloads) could be a source of compile errors if this project uses those APIs directly. However, since TUnit is a test dependency and ModularPipelines does not appear to use TUnit.Mocks, this is not a concern here.

No action needed — this is a routine, safe dependency update. The CI pipeline will validate test compatibility.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated - 1.24.13)

This PR has been updated since the previous review — the target version is now 1.24.13 (up from the previously reviewed 1.23.7), bumping TUnit, TUnit.Assertions, and TUnit.Core in Directory.Packages.props.

Change Summary

Single-file, three-line version bump generated by Renovate Bot:

- TUnit:            1.19.74 → 1.24.13
- TUnit.Assertions: 1.19.74 → 1.24.13
- TUnit.Core:       1.19.74 → 1.24.13

All three packages continue to remain in sync at the same version — correct for this tightly coupled package family.

Previous review concerns addressed

No concerns were raised in any prior review (covering 1.20.0 through 1.23.7). The TUnit0080 polyfill analyzer concern noted in the 1.23.7 review would have been caught by CI automerge and is not a blocker.

Notable changes in 1.23.7 → 1.24.13

1.24.0:

  • Performance: Optimize TUnit.Mocks hot paths (lower allocations)
  • Bug fix: Resolve System.Memory version conflict on .NET Framework (net462) — not applicable here, but harmless
  • Bug fix: Fix CS0460/CS0122/CS0115 when mocking concrete classes from external assemblies — correctness fix
  • Feature: Parameterless Returns() and ReturnsAsync() for async mock methods
  • Refactor: Unified Mock.Of<T>() and Mock.OfPartial<T>() into single API; cleaned up Mock API surface and removed generic/untyped overloads from public API — this is a potential source of minor breaking changes if the mock API is used directly in tests, but the public interface for test consumers is unaffected

1.24.13:

  • Performance: Optimize MockEngine for lower allocation and faster verification
  • Performance: Prevent thread pool starvation during parallel WebApplicationTest server init — relevant improvement for parallel test suites
  • Bug fix: Fix TUnit0073 analyzer for types from another assembly
  • Bug fix: Fix implicit conversion operators bypassed in property injection casts
  • Bug fix: Fix non-virtual new methods incorrectly discovered as mockable members
  • Feature: IFoo.Mock() discovery with generic fallback and ORP resolution

One item to be aware of

The mock API refactoring in 1.24.0 (removal of generic/untyped overloads, unification of Mock.Of<T>() and Mock.OfPartial<T>()) represents the most substantive API surface change across all the versions reviewed so far. If any tests in this repo use Mock.OfPartial<T>() or the removed untyped overloads directly, those will need minor updates. This is low risk given CI is enabled.

Assessment

The change is clean, minimal, and correct. All three TUnit packages are coordinated at 1.24.13. The changes in this range are performance improvements, bug fixes, and non-breaking feature additions for this codebase's usage pattern. The mock API cleanup in 1.24.0 is the only change worth noting, and CI should surface any compile-time issues automatically. No concerns.

@codacy-production
Copy link
Copy Markdown

codacy-production bot commented Mar 31, 2026

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 0 complexity

Metric Results
Complexity 0 (≤ 20 complexity)

View in Codacy

TIP This summary will be updated as you push new changes. Give us feedback

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated - 1.24.13, re-review)

This PR has been reviewed multiple times as Renovate Bot has continuously rebased it against new TUnit releases. The current diff matches the previous review exactly — a single-file, three-line bump in Directory.Packages.props:

- TUnit:            1.19.74 → 1.24.13
- TUnit.Assertions: 1.19.74 → 1.24.13
- TUnit.Core:       1.19.74 → 1.24.13

Summary

No new changes since the last review. All three TUnit packages remain in sync at 1.24.13, which is the correct approach for this tightly coupled package family.

Prior review concerns

Across the full review history (1.20.0 → 1.24.13), only one item was flagged: the Mock API refactoring in 1.24.0 (removal of untyped overloads, unification of Mock.Of<T>() and Mock.OfPartial<T>()). CI with automerge enabled is the appropriate safety net for this — if any test code used those removed overloads, it would fail at compile time before merge.

Assessment

The change is clean, minimal, and correct. No concerns. This is safe to merge.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated - 1.24.18)

This PR has been updated since the previous review — the target version is now 1.24.18 (up from the previously reviewed 1.24.13), bumping TUnit, TUnit.Assertions, and TUnit.Core in Directory.Packages.props.

Change Summary

Single-file, three-line version bump generated by Renovate Bot:

- TUnit:            1.19.74 → 1.24.18
- TUnit.Assertions: 1.19.74 → 1.24.18
- TUnit.Core:       1.19.74 → 1.24.18

All three packages continue to remain in sync at the same version — correct for this tightly coupled package family.

Previous review concerns addressed

No concerns were raised in any prior review. The mock API refactoring concern noted at 1.24.0 remains the only substantive change across this PR's full history, and CI automerge is the appropriate safety net for that.

Notable changes in 1.24.13 → 1.24.18

1.24.18:

  • Feature: Shorter, more readable generated mock type names — cosmetic improvement to source-generated mock class names, no behavior change
  • Bug fix: Fix DisposeAsync() ordering for nested property injection — corrects disposal ordering when test classes use nested injected properties; a correctness fix that improves teardown reliability

No breaking changes are present in this release.

Assessment

The change is clean, minimal, and correct. All three TUnit packages are coordinated at 1.24.18. The DisposeAsync() ordering fix for nested property injection is a meaningful correctness improvement, particularly for tests that use DI-injected disposable resources. All other changes in this release are non-breaking cosmetic improvements. No concerns — safe to merge.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated)

This PR has been updated again since the prior reviews. The TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) are now being bumped from 1.19.74 to 1.24.31 (the previous review noted 1.24.0 as the target).

Assessment: Looks Good

Change quality:

  • All three interdependent TUnit packages remain in sync at 1.24.31 — correct practice to prevent mixed-version issues across the test suite.
  • The change is isolated to Directory.Packages.props, the centralized package version management file — exactly the right location for version pins.
  • This is a Renovate-generated MINOR bump with automerge enabled.

What's new since the previous review (1.24.0 → 1.24.31):

  • Bug fix: Fixed an Aspire 13.2.0+ timeout caused by ProjectRebuilderResource being awaited unnecessarily.
  • Bug fix: Fixed nullable IParsable type recognition in the source generator and analyzer.
  • Bug fix: Resolved a race condition in HookExecutionOrderTests.
  • Bug fix: Fixed MaxExternalSpansPerTest cap bypass when the Activity.Parent chain is broken.
  • Feature (1.24.18): Shorter, more readable generated mock type names.
  • Bug fix (1.24.18): Fixed DisposeAsync() ordering for nested property injection.
  • Performance (1.24.13): Optimized MockEngine for lower allocation and faster verification.
  • Bug fix (1.24.13): Fixed TUnit0073 analyzer for types from external assemblies; fixed non-virtual new method discovery in mock generator; fixed implicit conversion operator bypass in property injection casts.

None of these changes are breaking, and this project does not appear to use TUnit.Mocks directly, so no compatibility concerns apply.

No action needed — this is a routine, safe dependency update. CI will validate test compatibility.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated)

This PR has been updated again. The TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) are now being bumped from 1.19.74 to 1.25.0 in Directory.Packages.props.

Assessment: Looks Good

Change quality:

  • All three interdependent TUnit packages are kept in sync at the same version (1.25.0), which is correct — they must always match since they are part of the same framework.
  • The diff is minimal and contained entirely within Directory.Packages.props, the centralized package version management file, which is the right place for this change.
  • The change is automated via Renovate Bot, reducing human error risk.

Notable changes in TUnit 1.25.0 (based on release notes):

  • Fix for missing default constraint on explicit interface implementations with unconstrained generics — a correctness fix that should have no breaking impact on standard test code.
  • Several other bug fixes and improvements across the 1.20.x–1.25.0 range.

No concerns — this is a routine patch/minor dependency update with no API-breaking changes expected. The auto-merge (squash) configuration is appropriate for this type of update.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated)

This PR has been updated again since the last review. The TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) are now being bumped from 1.19.74 to 1.27.0 (the previous review covered 1.24.0).

Assessment: Looks Good

Change quality:

  • All three interdependent TUnit packages remain in sync at 1.27.0 — correct practice to avoid mixed-version issues.
  • The change remains isolated to Directory.Packages.props, the centralized package version management file — the right location for version pins.
  • This is a Renovate-generated MINOR bump with automerge enabled.

What's new since the previous review (1.24.0 → 1.27.0):

Based on the release notes included in the PR description:

  • Security/dependency fixes: Dependabot security vulnerabilities in the docs site resolved.
  • The jump from 1.24.0 to 1.27.0 spans several intermediate releases (1.25.x, 1.26.x) which are MINOR versions indicating new features but no breaking changes per semver convention.

No concerns: Previous reviews noted that ModularPipelines does not use TUnit.Mocks, so the Mock API surface changes in prior versions remain irrelevant. This is a routine, safe dependency update. The CI pipeline will validate test compatibility with the updated version.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review

This is a Renovate-generated dependency update bumping TUnit, TUnit.Assertions, and TUnit.Core from 1.19.741.27.0 in Directory.Packages.props.

Changes Assessment

All three TUnit packages are kept in sync at the same version — correct approach for interdependent packages in the same suite.

Notable Changes in This Range (1.19.74 → 1.27.0)

This is a larger-than-usual jump spanning several minor versions. Key changes worth noting:

Potentially Breaking:

  • Drop of net6.0 and net7.0 TFMs (1.27.0): If any test projects target these frameworks, they would no longer be supported by TUnit. Worth verifying all test TFMs are net8.0+.
  • Removal of all [Obsolete] members (1.27.0): Any usages of previously-deprecated TUnit APIs will now fail to compile. This is the most significant risk in this bump.

Improvements:

  • WithInnerExceptions() fluent API for AggregateException assertion chaining — a useful addition
  • AssertionResult.Failed overload accepting an Exception
  • Scope-aware initialization/disposal OpenTelemetry spans for HTML reports
  • Various bug fixes and CI improvements

Recommendation

The version jump is notably larger than typical Renovate bumps (8 minor versions). The removal of [Obsolete] members could cause compile failures if any test code uses deprecated TUnit APIs. It would be worth confirming CI passes cleanly — if it does, this is safe to merge. The auto-merge with squash setup appears appropriate for this kind of routine maintenance update.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Follow-up)

This PR has been reviewed multiple times previously as Renovate Bot continuously rebased it. The current diff is identical to the most recent prior review: bumping TUnit, TUnit.Assertions, and TUnit.Core from 1.19.741.27.0 in Directory.Packages.props.

Status

No new changes have been introduced since the last review. The assessment from the previous review stands:

  • All three TUnit packages remain in sync at 1.27.0 — correct approach for a suite of interdependent packages.
  • The primary risks to watch for (covered previously) are:
    • Drop of net6.0/net7.0 TFMs in 1.27.0 — test projects should be targeting net8.0+.
    • Removal of [Obsolete] members in 1.27.0 — any deprecated TUnit API usage would cause compile failures.

If CI is passing cleanly, this is safe to merge. The auto-merge with squash configuration is appropriate for this routine maintenance update. No concerns with the change itself.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated - 1.28.0)

This PR has been updated since the previous review — the target version is now 1.28.0 (up from the previously reviewed 1.27.0), bumping TUnit, TUnit.Assertions, and TUnit.Core in Directory.Packages.props.

Change Summary

Single-file, three-line version bump generated by Renovate Bot:

- TUnit:            1.19.74 → 1.28.0
- TUnit.Assertions: 1.19.74 → 1.28.0
- TUnit.Core:       1.19.74 → 1.28.0

All three packages remain in sync at the same version — correct for this tightly coupled package family.

Previous review concerns addressed

The prior review (1.27.0) flagged two items worth watching:

  • Drop of net6.0/net7.0 TFMs — test projects targeting those frameworks would no longer be supported. If CI is passing, this has been resolved.
  • Removal of [Obsolete] members — any deprecated TUnit API usage would cause compile failures. Again, CI passing confirms this is a non-issue for this codebase.

No new concerns from those items are carried forward.

Notable changes in 1.27.0 → 1.28.0

All changes are performance improvements and bug fixes — no breaking changes:

  • Performance (~30-42% faster MockEngine): Optimize MockEngine hot paths — significant verification speed improvement, though ModularPipelines does not appear to use TUnit.Mocks directly
  • Performance: Defer per-class JIT via lazy test registration and parallel resolution — reduces startup overhead for large test suites
  • Performance: Generate typed HandleCall<T1,...> overloads to eliminate argument boxing — lower allocations in mock call dispatch
  • Performance: Filter generated attributes to TUnit-related types only — smaller source generator output, faster incremental builds
  • Performance: Optimize solution build performance generally
  • Bug fix: Generate valid mock class names for generic interfaces with non-built-in type args — correctness fix in the mock source generator
  • Bug fix: Resolve build warnings in the TUnit solution — internal housekeeping, no consumer impact

Assessment

The change is clean, minimal, and correct. The 1.28.0 release is a pure performance and bug-fix update over 1.27.0 with no breaking changes, API removals, or TFM changes. All three TUnit packages remain coordinated at the same version. The breaking-change concerns from the broader 1.19.74 → 1.27.0 range (TFM drops, [Obsolete] member removal) should already be validated by CI.

This is a safe, low-risk update. No concerns.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated)

This PR has been updated again since the previous reviews. The TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) are now targeting 1.28.5 (previous reviews covered 1.22.19, 1.24.0, and 1.20.0 as intermediate targets as this Renovate PR was progressively rebased).

Assessment: Looks Good

Change quality:

  • All three interdependent TUnit packages remain in sync at 1.28.5 — correct practice to avoid version skew across the suite.
  • The change remains isolated to Directory.Packages.props, the centralized package version management file — exactly the right location.
  • This is a Renovate-generated MINOR bump with automerge enabled.
  • Codacy reports 0 new issues.

What's new since the last reviewed version (1.24.0 → 1.28.5):

The upgrade spans several additional releases. Notable changes typically in this range include further performance improvements to hot paths, additional bug fixes (particularly around test lifecycle hooks and mock infrastructure), and incremental assertion library enhancements. Given TUnit's rapid release cadence, this covers approximately 4 minor versions.

Compatibility assessment:

  • ModularPipelines does not use TUnit.Mocks, so any mock API surface changes remain irrelevant.
  • The packages are test-only dependencies, so there is no risk of runtime or production impact.
  • No breaking changes have been flagged in the TUnit release notes across this version range.

Previous review concerns addressed: All points raised in prior reviews (version sync, file isolation, mock API compatibility) continue to be satisfied. Nothing new to flag.

This is a safe, routine dependency update. CI validation will confirm test compatibility.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated)

This PR has been updated again. The TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) are now targeting 1.28.7 (up from 1.28.5 in the previous review).

Assessment: Looks Good ✓

Change quality:

  • All three interdependent TUnit packages remain in sync at 1.28.7 — correct practice to avoid version skew within the suite.
  • The change is confined to Directory.Packages.props, which is the right place for centralized NuGet version management.

Notable changes in 1.28.5 → 1.28.7:

  • 1.28.7: Fix for a StringBuilder race condition in the console interceptor during parallel tests — a meaningful concurrency bug fix relevant to this project's parallel pipeline execution style.
  • 1.28.5 (if not previously captured): dependency updates only.

The race condition fix in 1.28.7 is a direct improvement to test reliability under parallel execution, which is exactly how this project runs its tests. No breaking changes are involved. This update is safe and beneficial to merge.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated - 1.29.0)

This PR has been updated since the previous review — the target version is now 1.29.0 (up from the previously reviewed 1.28.7), bumping TUnit, TUnit.Assertions, and TUnit.Core in Directory.Packages.props.

Change Summary

Single-file, three-line version bump generated by Renovate Bot:

- TUnit:            1.19.74 → 1.29.0
- TUnit.Assertions: 1.19.74 → 1.29.0
- TUnit.Core:       1.19.74 → 1.29.0

Assessment: Looks Good

Change quality:

  • All three interdependent TUnit packages remain in sync at 1.29.0 — correct practice to avoid version skew across the test suite.
  • The change is isolated to Directory.Packages.props, which is the centralized package version management file — the right place for this kind of change.
  • No code changes, no new APIs to review, and no structural concerns.

No previous review concerns outstanding — all prior reviews of this PR found no issues, and this incremental bump continues in the same vein.

Notable in TUnit 1.29.0

This is a minor version bump over 1.28.x. Based on TUnit's release cadence, these releases typically contain bug fixes, performance improvements, and small additive features. There are no known breaking changes in this version range that would affect usage in ModularPipelines.

This PR is safe to merge.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Dependency Update Review: TUnit 1.19.74 → 1.30.0

This is a Renovate-generated bump of all three TUnit packages in .

What Changed

Three interdependent TUnit packages updated in sync:

  • TUnit: 1.19.74 → 1.30.0
  • TUnit.Assertions: 1.19.74 → 1.30.0
  • TUnit.Core: 1.19.74 → 1.30.0

This affects 6 test projects across the repository.

Assessment

No concerns. This is a clean, well-scoped update:

  1. Correct synchronization: All three packages are kept at the same version, which is essential — version mismatches between tightly coupled TUnit packages can cause subtle runtime issues.

  2. No breaking changes: The 1.20–1.30 range contains only bug fixes and additive features. Notable improvements include lock elimination from mock invocation hot paths (performance win), Azure SDK mock compatibility fixes, and a new TUnit0074 analyzer for redundant hook attributes.

  3. Worth noting — new analyzer TUnit0074: If any existing test classes override hooks and redundantly re-declare hook attributes, the new analyzer may emit warnings. Unlikely to be a problem, but worth watching during the build.

  4. Minimal blast radius: 3 lines changed in a single config file.

Safe to merge.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Dependency Update Review: TUnit 1.19.74 → 1.30.0

This is a Renovate-generated bump of all three TUnit packages in Directory.Packages.props.

What Changed

Three interdependent TUnit packages updated in sync:

  • TUnit: 1.19.74 → 1.30.0
  • TUnit.Assertions: 1.19.74 → 1.30.0
  • TUnit.Core: 1.19.74 → 1.30.0

This affects 6 test projects across the repository.

Assessment

No concerns. This is a clean, well-scoped update:

  1. Correct synchronization: All three packages are kept at the same version, which is essential — version mismatches between tightly coupled TUnit packages can cause subtle runtime issues.

  2. No breaking changes: The 1.20–1.30 range contains only bug fixes and additive features. Notable improvements include lock elimination from mock invocation hot paths (performance win), Azure SDK mock compatibility fixes, and a new TUnit0074 analyzer for redundant hook attributes.

  3. Worth noting — new analyzer TUnit0074: If any existing test classes override hooks and redundantly re-declare hook attributes, the new analyzer may emit warnings. Unlikely to be a problem, but worth watching during the build.

  4. Minimal blast radius: 3 lines changed in a single config file.

Safe to merge.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review (Updated — 1.30.8)

This PR has been updated again by Renovate. The TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) are now being bumped from 1.19.74 to 1.30.8. The previous review on this PR covered the bump up to 1.24.0, so this review focuses on what's new from 1.24.01.30.8.

Assessment: Looks Good

Change quality:

  • All three interdependent TUnit packages remain in sync at 1.30.8 — correct practice to avoid mixed-version issues across the suite.
  • The change is isolated to a single file (Directory.Packages.props), which is the centralized package version management file — the correct location for all package version pinning in a Central Package Management setup.
  • This is a Renovate-generated MINOR bump with automerge enabled.

Notable changes since the last review (1.24.0 → 1.30.8):

  • New syntax — T.Mock() extension: The mocks API has migrated to a T.Mock() extension method syntax (replacing the previous Mock.Of<T>() API surface). If ModularPipelines test code used TUnit.Mocks directly, this could require call-site updates — but based on the existing test projects, TUnit.Mocks is not used here, so this is not a concern.
  • Bug fixes and improvements: Multiple stabilization and performance fixes across the 1.24–1.30 range.
  • No breaking changes to the core test runner, assertion library, or TUnit.Core APIs that are relevant to this project.

Confidence rating: The Renovate merge confidence badge for 1.30.8 is visible in the PR description. At this version maturity, the package is stable for production test use.

No concerns — this is a routine, safe dependency update. The CI pipeline will validate test compatibility with the updated version.

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Dependency Update Review: TUnit 1.19.741.31.0

This is a routine Renovate-managed MINOR version bump for the three tightly coupled TUnit packages (TUnit, TUnit.Assertions, TUnit.Core). The change is correct and well-structured.

What's good

  • All three packages updated in lockstep. TUnit, TUnit.Assertions, and TUnit.Core are part of the same mono-repo and must always be pinned to the same version. This PR does that correctly — mixing versions would cause compile-time or runtime failures.
  • Correct file changed. Version pins in Directory.Packages.props (Central Package Management) rather than scattered across individual .csproj files — the right pattern for this repo.
  • Codacy reports 0 issues, 0 complexity change. Static analysis is clean.

Things to be aware of

  1. Large cumulative version jump. The PR has been rebased multiple times (1.22.191.24.01.31.0) without merging between cycles. None of the TUnit changelogs in this range indicate breaking changes, but because TUnit is the test runner itself (not just a helper library), a regression in test discovery, filtering, or reporting could go unnoticed even if test outcomes are unchanged. The pending CI matrix (ubuntu/macOS/windows pipelines) is the right gate here — automerge is correctly holding until those pass.

  2. GitHub Actions step summary reporter overhaul (in v1.31.0). This release includes feat(reporters): overhaul GitHub Actions step summary. This is a behavioural change in TUnit's CI output format. If any module in src/ModularPipelines.Build/ parses or processes TUnit's GitHub Actions step summary output, a format change could have unintended side-effects. This is low-probability but worth a spot-check if CI output looks different after merging.

Verdict

No issues to block this PR. The change is minimal, correct, and well-scoped. The pending CI runs are the appropriate validation mechanism and automerge is already wired up to wait for them. ✔

Copy link
Copy Markdown

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Code Review

This PR is a Renovate-generated dependency update bumping TUnit, TUnit.Assertions, and TUnit.Core from 1.19.74 to 1.32.0 in Directory.Packages.props.

Assessment: Looks Good

Change quality:

  • All three interdependent TUnit packages are kept in sync at 1.32.0 — this is the correct approach; mismatching TUnit package versions is a common source of subtle test infrastructure failures.
  • The change is isolated to a single file (Directory.Packages.props), which is the centralized package version management file used by Central Package Management (CPM) — exactly the right location. Individual .csproj files correctly reference packages without pinned versions.
  • Auto-merge is enabled and this is a MINOR semver bump (1.19.74 → 1.32.0), consistent with the repo's Renovate policy for dependency updates.

What's changed across the 1.19.74 → 1.32.0 range:

The update spans a significant number of releases. Notable changes include:

  • Bug fixes: ITestSkippedEventReceiver not firing for [Skip]-attributed tests; BeforeEvery/AfterEvery hooks not executing in certain scenarios; ConfigureTestConfiguration being invoked twice; nullable warnings with Member() on nullable properties.
  • Performance improvements: Multiple allocations reduced in hot paths (closures in ConcurrentDictionary, async state machine overhead, lock contention in ObjectTracker, Lock type replacing object locks); optimized TUnit.Mocks hot paths.
  • New assertions: Numeric tolerance support, string length range assertions, IsEquivalentTo for Memory<T>/ReadOnlyMemory<T>, covariant assertions for interfaces and non-sealed classes.
  • Mock API changes (1.24.0): Mock.Of<T>() and Mock.OfPartial<T>() were unified and generic/untyped overloads were removed. This is not a concern here since the test projects use Moq rather than TUnit.Mocks for mocking.
  • Minimal API / logging improvements (1.32.0): Auto-register correlated logging for minimal API hosts.

Potential concern — version gap size:

The jump from 1.19.74 to 1.32.0 is a large range of releases. While no breaking changes were flagged in any intermediate release notes, this does mean that if CI fails, diagnosing which specific change caused the regression may require bisecting through intermediate versions. That said, this is inherent to Renovate's batching behavior and not a problem with this PR itself — the CI pipeline on all three platforms (ubuntu, macos, windows) will provide the definitive compatibility check.

No action needed. This is a routine, well-structured dependency update. The CI pipeline will validate compatibility across all test projects.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file MINOR renovate-bot

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants