Conversation
There was a problem hiding this comment.
Code Review
This is a straightforward Renovate-generated dependency update bumping TUnit, TUnit.Assertions, and TUnit.Core from 1.19.74 → 1.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 IsEquivalentToassertion added forMemory<T>andReadOnlyMemory<T>- Fix for
ConfigureTestConfigurationbeing invoked twice ConfigureAppHosthook added toAspireFixture
None of these are breaking changes — they are bug fixes and additive features. The bump is a minor version (1.19.x → 1.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.
1bfea70 to
a77739b
Compare
There was a problem hiding this comment.
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.74 → 1.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
ConcurrentDictionaryclosure allocations in hot paths - Reduced async state machine overhead in test execution pipeline
- Reduced allocations in
EventReceiverOrchestratorandTestContextExtensions - Skip timeout machinery when no timeout configured
- Reduced allocations and lock contention in
ObjectTracker - Consolidate module initializers into single
.cctorvia 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.
a77739b to
30eef24
Compare
There was a problem hiding this comment.
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.74 → 1.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
Locktype for more efficient synchronization (#5219) - Parallelize test metadata collection for source-generated tests (#5221)
- Use
GetOrAddargs 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.
30eef24 to
4f8485a
Compare
There was a problem hiding this comment.
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.74 → 1.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
TUnitImplicitUsingsset inDirectory.Build.props(#5225) - Fix:
BeforeEvery/AfterEveryhooks 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.
4f8485a to
f18561b
Compare
There was a problem hiding this comment.
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.7All 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
MockEnginecollections to reduce startup overhead - Fix mock generator not emitting
TUnit.Mocks.Generatednamespace — 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
TUnit0080analyzer for missing polyfill types — may surface new build warnings/errors if polyfill types are absent, worth noting - Bug fix: Respect user-set
TUnitImplicitUsingsfromDirectory.Build.props— a correctness fix for projects that opt out of implicit usings viaDirectory.Build.props - Performance: Optimize
TUnit.Mockshot 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.
1608430 to
c73b79f
Compare
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 Assessment: Looks GoodChange quality:
What's new since the previous review (1.22.19 → 1.24.0):
Compatibility note: The refactoring of the Mock API surface in 1.24.0 (unifying No action needed — this is a routine, safe dependency update. The CI pipeline will validate test compatibility. |
c73b79f to
5403a45
Compare
There was a problem hiding this comment.
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.13All 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.Mockshot paths (lower allocations) - Bug fix: Resolve
System.Memoryversion conflict on .NET Framework (net462) — not applicable here, but harmless - Bug fix: Fix
CS0460/CS0122/CS0115when mocking concrete classes from external assemblies — correctness fix - Feature: Parameterless
Returns()andReturnsAsync()for async mock methods - Refactor: Unified
Mock.Of<T>()andMock.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
MockEnginefor lower allocation and faster verification - Performance: Prevent thread pool starvation during parallel
WebApplicationTestserver init — relevant improvement for parallel test suites - Bug fix: Fix
TUnit0073analyzer for types from another assembly - Bug fix: Fix implicit conversion operators bypassed in property injection casts
- Bug fix: Fix non-virtual
newmethods 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.
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | ✅ 0 (≤ 20 complexity) |
TIP This summary will be updated as you push new changes. Give us feedback
There was a problem hiding this comment.
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.13Summary
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.
There was a problem hiding this comment.
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.18All 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.
There was a problem hiding this comment.
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
ProjectRebuilderResourcebeing awaited unnecessarily. - Bug fix: Fixed nullable
IParsabletype recognition in the source generator and analyzer. - Bug fix: Resolved a race condition in
HookExecutionOrderTests. - Bug fix: Fixed
MaxExternalSpansPerTestcap bypass when theActivity.Parentchain 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
MockEnginefor lower allocation and faster verification. - Bug fix (1.24.13): Fixed
TUnit0073analyzer for types from external assemblies; fixed non-virtualnewmethod 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.
There was a problem hiding this comment.
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
defaultconstraint 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.
There was a problem hiding this comment.
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.0to1.27.0spans 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.
There was a problem hiding this comment.
Code Review
This is a Renovate-generated dependency update bumping TUnit, TUnit.Assertions, and TUnit.Core from 1.19.74 → 1.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 forAggregateExceptionassertion chaining — a useful additionAssertionResult.Failedoverload accepting anException- 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.
There was a problem hiding this comment.
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.74 → 1.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.
There was a problem hiding this comment.
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.0All 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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
StringBuilderrace 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.
There was a problem hiding this comment.
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.0Assessment: 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.
There was a problem hiding this comment.
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.0TUnit.Assertions: 1.19.74 → 1.30.0TUnit.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:
-
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.
-
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.
-
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.
-
Minimal blast radius: 3 lines changed in a single config file.
Safe to merge.
There was a problem hiding this comment.
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.0TUnit.Assertions: 1.19.74 → 1.30.0TUnit.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:
-
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.
-
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.
-
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.
-
Minimal blast radius: 3 lines changed in a single config file.
Safe to merge.
There was a problem hiding this comment.
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.0 → 1.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 aT.Mock()extension method syntax (replacing the previousMock.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.CoreAPIs 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.
There was a problem hiding this comment.
Dependency Update Review: TUnit 1.19.74 → 1.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, andTUnit.Coreare 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.csprojfiles — the right pattern for this repo. - Codacy reports 0 issues, 0 complexity change. Static analysis is clean.
Things to be aware of
-
Large cumulative version jump. The PR has been rebased multiple times (
1.22.19→1.24.0→1.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. -
GitHub Actions step summary reporter overhaul (in
v1.31.0). This release includesfeat(reporters): overhaul GitHub Actions step summary. This is a behavioural change in TUnit's CI output format. If any module insrc/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. ✔
There was a problem hiding this comment.
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.csprojfiles 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:
ITestSkippedEventReceivernot firing for[Skip]-attributed tests;BeforeEvery/AfterEveryhooks not executing in certain scenarios;ConfigureTestConfigurationbeing invoked twice; nullable warnings withMember()on nullable properties. - Performance improvements: Multiple allocations reduced in hot paths (closures in
ConcurrentDictionary, async state machine overhead, lock contention inObjectTracker,Locktype replacing object locks); optimized TUnit.Mocks hot paths. - New assertions: Numeric tolerance support, string length range assertions,
IsEquivalentToforMemory<T>/ReadOnlyMemory<T>, covariant assertions for interfaces and non-sealed classes. - Mock API changes (1.24.0):
Mock.Of<T>()andMock.OfPartial<T>()were unified and generic/untyped overloads were removed. This is not a concern here since the test projects useMoqrather thanTUnit.Mocksfor 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.
This PR contains the following updates:
1.19.74→1.32.01.19.74→1.32.01.19.74→1.32.0Release Notes
thomhurst/TUnit (TUnit)
v1.32.0: 1.32.0What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.31.0...v1.32.0
v1.31.0: 1.31.0What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.30.8...v1.31.0
v1.30.8: 1.30.8What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.30.0...v1.30.8
v1.30.0: 1.30.0What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.29.0...v1.30.0
v1.29.0: 1.29.0What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.28.7...v1.29.0
v1.28.7: 1.28.7What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.28.5...v1.28.7
v1.28.5: 1.28.5What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.28.0...v1.28.5
v1.28.0: 1.28.0What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.27.0...v1.28.0
v1.27.0: 1.27.0What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.25.0...v1.27.0
v1.25.0: 1.25.0What's Changed
Other Changes
defaultconstraint on explicit interface implementations with unconstrained generics by @thomhurst in #5363Dependencies
Full Changelog: thomhurst/TUnit@v1.24.31...v1.25.0
v1.24.31: 1.24.31What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.24.18...v1.24.31
v1.24.18: 1.24.18What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.24.13...v1.24.18
v1.24.13: 1.24.13What's Changed
Other Changes
UseTestingPlatformProtocolreference for vscode by @erwinkramer in #5328Dependencies
New Contributors
Full Changelog: thomhurst/TUnit@v1.24.0...v1.24.13
v1.24.0: 1.24.0What's Changed
Other Changes
Dependencies
New Contributors
Full Changelog: thomhurst/TUnit@v1.23.7...v1.24.0
v1.23.7: 1.23.7What's Changed
Other Changes
Dependencies
New Contributors
Full Changelog: thomhurst/TUnit@v1.22.19...v1.23.7
v1.22.19: 1.22.19What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.22.6...v1.22.19
v1.22.6: 1.22.6What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.22.3...v1.22.6
v1.22.3: 1.22.3What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.22.0...v1.22.3
v1.22.0: 1.22.0What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.21.30...v1.22.0
v1.21.30: 1.21.30What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.21.24...v1.21.30
v1.21.24: 1.21.24What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.21.20...v1.21.24
v1.21.20: 1.21.20What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.21.6...v1.21.20
v1.21.6: 1.21.6What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.21.0...v1.21.6
v1.21.0: 1.21.0What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.20.0...v1.21.0
v1.20.0: 1.20.0What's Changed
Other Changes
Dependencies
Full Changelog: thomhurst/TUnit@v1.19.74...v1.20.0
Configuration
📅 Schedule: (UTC)
🚦 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.
This PR has been generated by Renovate Bot.