Skip to content

chore(deps): update tunit to 1.36.0#2458

Merged
thomhurst merged 1 commit intomainfrom
renovate/tunit
Apr 18, 2026
Merged

chore(deps): update tunit to 1.36.0#2458
thomhurst merged 1 commit intomainfrom
renovate/tunit

Conversation

@thomhurst
Copy link
Copy Markdown
Owner

@thomhurst thomhurst commented Mar 21, 2026

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

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

Release Notes

thomhurst/TUnit (TUnit)

v1.36.0: 1.36.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.35.2...v1.36.0

v1.35.2: 1.35.2

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.35.0...v1.35.2

v1.35.0: 1.35.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.34.5...v1.35.0

v1.34.5: 1.34.5

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.34.0...v1.34.5

v1.34.0: 1.34.0

What's Changed
Other Changes
Dependencies

Full Changelog: thomhurst/TUnit@v1.33.0...v1.34.0

v1.33.0: 1.33.0

What's Changed
Other Changes
Dependencies

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

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


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.

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.

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: chore(deps): update tunit to 1.32.0

This is a Renovate-bot generated dependency update bumping all three TUnit packages from 1.19.74 to 1.32.0 in Directory.Packages.props.

What Changed

- <PackageVersion Include="TUnit" Version="1.19.74" />
- <PackageVersion Include="TUnit.Assertions" Version="1.19.74" />
- <PackageVersion Include="TUnit.Core" Version="1.19.74" />
+ <PackageVersion Include="TUnit" Version="1.32.0" />
+ <PackageVersion Include="TUnit.Assertions" Version="1.32.0" />
+ <PackageVersion Include="TUnit.Core" Version="1.32.0" />

Assessment

Correct use of Central Package Management — The update is made exclusively in Directory.Packages.props, which is the right single source of truth for package versions. Individual .csproj files reference TUnit without version attributes, as expected.

Version consistency maintained — All three TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) are bumped to the same 1.32.0. These packages are tightly coupled and must be kept in lockstep — this is handled correctly.

Scope of impact — TUnit is used across 6 test projects in the repo. The jump from 1.19.741.32.0 spans a non-trivial number of releases (~13 minor versions), though given this is the author's own framework, any breaking changes should be well understood.

Auto-merge note — Auto-merge (squash) is enabled. Given the version distance, it would be prudent to confirm all CI pipeline checks pass (pipeline (ubuntu-latest/windows-latest/macos-latest)) before the merge fires.

Verdict

Clean, mechanically correct dependency update. No design concerns, no architectural issues. The change follows all established conventions for this repo. No blocking issues — approve once CI confirms green.

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 - TUnit Dependency Update (1.19.74 → 1.33.0)

Summary

This is a straightforward, low-risk Renovate-managed dependency update bumping three interdependent TUnit packages together. Previous reviews have tracked this PR across prior rebases (1.22.19, 1.24.0); this latest revision lands at 1.33.0.

What's Changed

Only 3 lines in Directory.Packages.props are modified — all three TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) are kept in version lockstep at 1.33.0.

Strengths

Package coherence: All three packages are bumped together, which is the correct approach. These packages are interdependent, and mismatched versions can cause subtle runtime failures or compilation errors. This PR does it right.

Centralized version management: The change is isolated to Directory.Packages.props, the project's central package version file. This is architecturally sound — a single source of truth prevents version drift across multiple .csproj files.

Minimal blast radius: 3 lines in 1 file. Easy to review, easy to rollback if needed.

Substantial release delta: The jump from 1.19.74 to 1.33.0 is not trivial — it includes engine-wide performance improvements (reduced allocations in hot paths, improved ObjectTracker efficiency, reduced lock contention), bug fixes for test event receivers and hook execution, nullable reference type correctness fixes, and new assertion capabilities (numeric tolerance, length ranges, Memory<T> equivalence). These are meaningful improvements, not just version noise.

Considerations

Testing validation: The CI pipeline should confirm that all existing tests pass. The release notes indicate no breaking changes, but a ~14 minor-version jump is worth confirming through a green build.

Transitive dependencies: Worth verifying that no transitive dependencies pulled by 1.33.0 conflict with other pinned versions in the project (particularly given the number of packages already pinned in Directory.Packages.props).

Prior Review Items

The previous reviews raised no outstanding concerns — all previous points have been addressed by the natural progression of this Renovate PR.

Verdict

LGTM. No changes required. This update is safe, well-structured, and follows the project's established patterns. Once CI passes, this is ready 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.33.0)

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

Previous review concerns addressed

All prior reviews had no concerns — this continues the same pattern of additive updates.

What's notable across 1.21.20 → 1.33.0

Correctness fixes (most important):

  • enforce ParallelLimiter semaphore in TestRunner to prevent DependsOn bypass (#5526) — this is a meaningful correctness fix: previously, [DependsOn]-ordered tests could bypass the configured parallel limiter, potentially causing flaky tests in constrained-concurrency scenarios
  • Fix: cascade HookExecutorAttribute from class/assembly to hooks (#5512)
  • Fix: StringBuilder race in console interceptor during parallel tests (#5414)
  • Fix: deduplicate virtual hook overrides across class hierarchy (#5441)
  • Fix: apply CultureAttribute and STAThreadExecutorAttribute to hooks (#5463)
  • Fix: truncate large stdout/stderr in HTML report to prevent JSON serialization failure (#5485)

Performance improvements:

  • Engine-wide performance optimizations (#5520)
  • Reduce allocations and improve hot-path performance (#5524)
  • Eliminate locks from mock invocation/verification hot paths (#5422)
  • MockEngine hot paths ~30–42% faster (#5391)
  • Defer per-class JIT via lazy test registration + parallel resolution (#5395)
  • Multiple allocation reductions across event receivers, object tracking, and mock behaviors

New features:

  • TUnitSettings static API for programmatic configuration (#5522)
  • TUnit0074 analyzer for redundant hook attributes on overrides (#5459)
  • Overhauled GitHub Actions step summary reporter (#5483)
  • HTML report: failure clustering, minimap sidebar, category/tag filter pills, flaky test detection (#5490–5498)
  • TestContext.MakeCurrent() for console output correlation (#5502)
  • Activity baggage-based test context correlation (#5505)
  • Async Member() overloads for Task-returning member selectors (#5475)

Assessment

No breaking changes across any of the intermediate versions. The jump from 1.21.20 to 1.33.0 is a large version gap but all releases follow the same additive pattern: correctness fixes, performance improvements, and new tooling features. The ParallelLimiter fix in 1.33.0 is particularly relevant for this project given it uses [DependsOn] extensively — this fix could improve test stability.

All three TUnit packages remain in sync at 1.33.0, which is correct for this tightly coupled suite. 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

This is a Renovate-generated dependency update bumping TUnit, TUnit.Assertions, and TUnit.Core from 1.19.741.34.0 in Directory.Packages.props. All three packages are kept in sync at the same version — which is the correct approach for this interdependent package suite.


Summary of Changes Across 1.19.74 → 1.34.0

This is a significant version span covering 15+ minor releases. Key highlights:

Fixes:

  • ParallelLimiter semaphore now enforced in TestRunner to prevent DependsOn bypass (v1.33.0)
  • ITestOutput writes routed through synchronized ConcurrentStringWriter (v1.34.0)
  • CultureAttribute and STAThreadExecutorAttribute now apply to hooks (v1.30.0)
  • Deduplicate virtual hook overrides across class hierarchy (v1.29.0)
  • Multiple mock correctness fixes (nullable annotations, generic type accessibility, Azure SDK client mocking)

Performance:

  • Engine-wide performance optimizations and reduced allocations on hot paths (v1.33.0)
  • Lock elimination from mock invocation and verification hot paths (v1.30.0)

New Features:

  • TUnitSettings static API for programmatic configuration (v1.33.0)
  • Flaky test detection + failure clustering in HTML report (v1.31.0)
  • GitHub Actions step summary overhaul (v1.31.0)
  • Cross-process test log correlation via OTLP receiver (v1.34.0)
  • TestContext.MakeCurrent() for console output correlation (v1.31.0)
  • New analyzer TUnit0074 for redundant hook attributes on overrides (v1.30.0)

Notable Items Worth Awareness

1. CorrelatedTUnitLogger moved to TUnit.Logging.Microsoft (v1.34.0)
If ModularPipelines references CorrelatedTUnitLogger directly anywhere in test code, the namespace/package location has changed. This is a refactor-style change but could surface as a compile error if the new package isn't referenced.

2. TUnit.AspNetCore split into Core + meta package (v1.30.8)
If any test project in this repo references TUnit.AspNetCore, the package was split in v1.30.8. The meta package retains the original name but TUnit.AspNetCore.Core is now a separate dependency. The split shouldn't require changes if you reference the meta package — but worth verifying tests still compile.

3. Version confidence badge
The Renovate confidence badge for this jump is worth a glance in the PR description — the span from 1.19.x to 1.34.0 is substantial, but since this is the TUnit author's own repo and they manage TUnit itself, any API changes in flight are known quantities.


Assessment

The change itself is minimal and correct — three version pins updated in lockstep in Directory.Packages.props. Given the author is Tom Longhurst (who also maintains TUnit), any behavioral changes across these versions are well understood. The performance improvements in v1.33.0 are a direct benefit to test run times.

Approved assuming CI passes. The two items above (CorrelatedTUnitLogger move and TUnit.AspNetCore split) are edge cases that CI will surface immediately if they apply.

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.34.0 → 1.35.0)

This PR has been updated since the previous review. The TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) are now targeting 1.35.0 (up from 1.34.0).

Change Summary

Single-file, three-line version bump in Directory.Packages.props:

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

All three packages remain in sync — correct approach for this tightly coupled suite.

Previous review concerns addressed

The prior review (1.34.0) flagged two items worth awareness:

  1. CorrelatedTUnitLogger moved to TUnit.Logging.Microsoft — CI would have surfaced any compile failures from this.
  2. TUnit.AspNetCore split — similarly, CI is the appropriate gate. If CI has been green, both are non-issues for this codebase.

No outstanding concerns carried forward.

What's new in 1.35.0

Based on the release notes in the PR description:

  • fix: support open generic transitive auto-mocks (#5568) — correctness fix for the mock generator when dealing with open generic types in transitive dependencies. Irrelevant here since TUnit.Mocks is not used in ModularPipelines test projects.
  • refactor: separate test and lifecycle tracing (#5572) — internal restructuring of OpenTelemetry span generation; test spans and lifecycle spans (hooks, fixtures) are now emitted separately. This is a non-breaking refactor but could affect custom trace analysis if any test tooling parses TUnit's activity structure.
  • fix: expand nested And/Or expectations in failure messages (#5573) — improved assertion failure message clarity when using compound And()/Or() assertion chains. A direct usability improvement with no behavior change.

No breaking changes are indicated in this release.

Assessment

The change is clean, minimal, and correct. 1.35.0 is an incremental patch/minor release over 1.34.0 containing one bug fix, one internal refactor, and one UX improvement to assertion messages. The tracing refactor is the most structural change, but it is internal to TUnit's OpenTelemetry integration and has no consumer-visible API impact for standard test code. Safe to merge once CI passes.

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.35.2)

This PR has been reviewed many times previously as Renovate continuously rebased it. The current diff bumps TUnit, TUnit.Assertions, and TUnit.Core from 1.19.741.35.2 in Directory.Packages.props.

Assessment: Looks Good ✓

Change quality:

  • All three interdependent TUnit packages remain in sync at the same version — the correct approach for this tightly coupled suite.
  • Single-file, three-line change with no risk of unintended side effects.
  • 1.35.2 is a patch release fixing SourceLink and deterministic builds in published packages — a low-risk, safe-to-merge update.

Notable in TUnit 1.35.x

  • 1.35.0: Fix for open generic transitive auto-mocks; separate test and lifecycle tracing; improved nested And/Or failure messages.
  • 1.35.2: Restores SourceLink and deterministic builds in published packages — a packaging correctness fix with no behavioral changes.

No concerns. This is a safe, well-structured dependency bump.

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.36.0 in Directory.Packages.props.

Assessment: Approved

The change is minimal and correct:

  • All three TUnit packages are bumped in lockstep to the same version — this is essential since they are tightly coupled and must stay aligned.
  • The version jump spans ~16 minor releases (1.19.74 → 1.36.0), meaning many accumulated fixes and features are included.

Notable highlights across the range

  • Breaking change awareness: [Obsolete] members removed in v1.27 were restored in v1.36.0 (#5605), reducing risk from the intermediate breakage window.
  • Bug fixes: Improvements to nested And/Or assertion failure messages, ConfigureTestConfiguration double-invocation fix, and open generic transitive auto-mock support.
  • New features: TUnit0064 analyzer, OpenTelemetry zero-config tracing, auto-propagation of test trace context through IHttpClientFactory — none of which impose breaking changes on existing consumers.
  • Build fixes: SourceLink and deterministic builds restored in published packages (v1.35.2).

No concerns

No API breakage is expected for typical usage in this project. The Directory.Packages.props central package management approach ensures the version is applied consistently across all consuming projects. 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

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

What looks good

  • All three TUnit packages are bumped consistently to the same version — this is important since they're part of the same framework and mixing versions would likely cause runtime issues.
  • The centralized Directory.Packages.props pattern is being used correctly — a single change point controls all consuming projects, which is exactly the right approach for a monorepo.
  • The diff is minimal and clean with no unrelated changes.

One thing worth noting

The jump is 17 minor versions (1.19 → 1.36), which is a meaningful gap. Based on the release notes in the PR body, there are a large number of changes across these versions. While Renovate reports high confidence, a version range this wide carries a non-trivial risk of subtle behavioral changes in tests (assertion message formats, attribute semantics, runner behavior, etc.).

Recommendation: Ensure CI passes fully before merging, and pay particular attention to any test output changes even if tests still pass (e.g., assertion error messages that are captured in snapshots or checked by string comparison). If CI is green, this is safe to merge.

Overall this is a straightforward, well-structured dependency update. No architectural 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 — 1.36.0)

This PR has been reviewed numerous times as Renovate Bot has continuously rebased it. The target version is now 1.36.0 (up from 1.33.0 in the previous review), bumping TUnit, TUnit.Assertions, and TUnit.Core in Directory.Packages.props.

Change Summary

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

Notable in 1.33.x → 1.36.0

Based on the TUnit release history:

  • 1.34.x: Continued bug fixes and performance improvements for parallel test execution
  • 1.35.x: Incremental stability improvements
  • 1.36.0: Fix for not rendering a test's own trace as a Linked Trace in the HTML report (per the PR description)

All changes in this range are bug fixes and additive features — no breaking changes.

Assessment: Looks Good

  1. All three packages remain in lockstep at 1.36.0 — correct; mixing TUnit package versions causes subtle compile-time failures.
  2. Change is confined to a single file (Directory.Packages.props) — the correct central location for NuGet version management.
  3. No previous concerns remain unaddressed — all prior reviews approved this class of change.

This PR can be merged.

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.36.0)

This PR has been updated again by Renovate. The TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) are now at 1.36.0, up from the previously reviewed 1.33.0.

What's Changed

3 lines in Directory.Packages.props — the three TUnit packages remain in lockstep at 1.36.0. No structural changes.

Strengths

Version coherence maintained: All three interdependent packages are bumped together, which is the correct pattern. Mismatched versions between these packages can cause subtle compilation and runtime failures.

Centralized version management: Change is isolated to Directory.Packages.props, maintaining a single source of truth for package versions across the solution.

Notable release improvements (1.33.0 → 1.36.0): The 1.36.0 release includes fixes for HTML report trace rendering (test traces no longer incorrectly show as Linked Traces) and documentation improvements. This is a clean, low-churn minor release with no reported breaking changes.

Prior Review Items

All previous review points have been addressed across the prior iterations. No outstanding concerns remain.

Verdict

LGTM. This is a routine, well-structured dependency maintenance update. Once CI is green, 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

This is a follow-up review on a Renovate-managed dependency update. The target version remains 1.36.0 — identical to the previous review.

Diff Summary

Only Directory.Packages.props is modified:

TUnit:            1.19.74 → 1.36.0
TUnit.Assertions: 1.19.74 → 1.36.0
TUnit.Core:       1.19.74 → 1.36.0

Assessment

No new concerns since the previous review. The change remains:

  • Consistent: all three packages remain at the same version — critical for TUnit, which does not support mixed versions
  • Minimal: isolated to a single file with no unrelated modifications
  • Safe: 1.36.0 contains only bug fixes and additive features per release notes

No previous review concerns remain outstanding.

LGTM. Ready to merge once CI is green.

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 updates TUnit, TUnit.Assertions, and TUnit.Core from 1.19.741.36.0 in Directory.Packages.props. The change is clean — all three interdependent packages are kept at the same version, which is correct.

Version Jump Assessment

This is a larger-than-usual Renovate batch, spanning ~17 minor versions. The accumulated changes are worth noting:

Notable fixes relevant to this project:

  • v1.33.0: ParallelLimiter semaphore now enforced in TestRunner to prevent DependsOn bypass — directly relevant given ModularPipelines' dependency graph model and parallel execution
  • v1.34.5: Test output capped at 1M chars to prevent OOM — good defensive fix for large pipeline outputs
  • v1.34.0: ITestOutput writes routed through synchronized ConcurrentStringWriter — relevant for parallel test runs
  • v1.36.0: Restores [Obsolete] members that were removed in v1.27 — worth verifying no test code was silently broken between v1.20 and v1.27 if intermediate bumps were skipped

Notable features (low risk, additive):

  • Engine-wide performance optimizations (v1.33.0)
  • GitHub Actions step summary overhaul (v1.31.0) — may improve CI output readability
  • OpenTelemetry tracing integration additions (v1.34.0+)

Assessment

The change is minimal and correct. The large version span is the only concern — if CI passes cleanly with this bump, there's no reason to hold back. The [Obsolete] member restoration in v1.36.0 is actually a positive safety net if any removed APIs were in use.

Approve once CI is green.

@claude
Copy link
Copy Markdown

claude Bot commented Apr 18, 2026

Code Review (Updated — 1.36.0)

This PR has been updated again since the last review. Previous reviews covered up to 1.24.0; the target is now 1.36.0. The change remains a single-file bump in Directory.Packages.props keeping all three TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) in sync.

Assessment: Looks Good

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

  • Bug fixes:
    • [Obsolete] members removed in v1.27 have been restored to avoid silent breakage for consumers still using them.
    • ExecutionContext flow for hosted services is now auto-suppressed, preventing subtle async-context leaks in test hosts.
    • HTML report no longer incorrectly renders a test's own trace as a "Linked Trace".
  • New features:
    • DistributedContextPropagator is now auto-aligned to W3C standards.
    • New TUnit0064 analyzer warns against direct WebApplicationFactory inheritance and provides a code fix.
    • Test trace context is automatically propagated through IHttpClientFactory — useful for distributed tracing in integration tests.
    • New TUnit.OpenTelemetry zero-config tracing package and generalised OTLP receiver (previously Aspire-only).

Compatibility note: The restored [Obsolete] members in 1.36.0 are additive and backwards-compatible. The new analyzer (TUnit0064) may surface new warnings if any test classes directly inherit WebApplicationFactory, but these would be warnings, not errors, and are easy to address. No breaking changes are expected for this project.

No concerns. The change is correctly isolated, all three packages stay in sync, and 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 — 1.19.74 → 1.36.0)

This PR has been reviewed multiple times as Renovate continuously rebased it against new TUnit releases. The current diff bumps TUnit, TUnit.Assertions, and TUnit.Core from 1.19.74 to 1.36.0 — a jump of 16 minor/patch releases since the original PR was opened.

Assessment: Looks Good ✔

Change quality:

  • All three interdependent TUnit packages are kept in version lockstep at 1.36.0 — correct practice; mismatching TUnit package versions is a well-known source of subtle test infrastructure failures.
  • The change is scoped to a single file (Directory.Packages.props), touching only 3 lines with no collateral changes.

Notable changes in the 1.19.74 → 1.36.0 range (highlights):

  • Multiple bug fixes across the HTML report renderer, parallel execution, and assertion internals.
  • IsEquivalentTo assertion extended to Memory<T> / ReadOnlyMemory<T>.
  • ConfigureAppHost hook added to AspireFixture.
  • Various improvements to ClassDataSource, DataDriven parallelism, and test lifecycle hooks.
  • No breaking API changes reported across this range.

No concerns. This is a routine dependency maintenance update. The packages are from the same author as this repository (thomhurst/TUnit), so version compatibility and intentionality can be taken as given.

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.36.0 in Directory.Packages.props.

Assessment: Looks good

The change is minimal and correct:

  • All three interdependent TUnit packages are kept in sync at the same version — this is essential since mismatched versions across TUnit, TUnit.Core, and TUnit.Assertions would likely cause runtime or compilation errors.
  • Central Package Management via Directory.Packages.props is the right place for this update.

Notable changes across 1.19.74 → 1.36.0

This is a significant version jump covering many releases. Key highlights include:

  • Bug fixes: HTML report rendering issues, ExecutionContext flow suppression for hosted services, restored [Obsolete] members removed in v1.27
  • New features: TUnit.OpenTelemetry zero-config tracing, auto-propagation of test trace context through IHttpClientFactory, TUnit0064 analyzer for WebApplicationFactory inheritance
  • No breaking changes expected based on the MINOR version increments throughout this range

No concerns

Auto-merge is already enabled. This is a safe, routine dependency update.

@claude
Copy link
Copy Markdown

claude Bot commented Apr 18, 2026

Code Review

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

(Previous reviews by claude covered incremental steps up to 1.36.0 — this is a consolidated review of the final state.)

Assessment: Approved

Change quality:

  • All three interdependent TUnit packages remain in sync at 1.36.0 — this is the correct practice to avoid mixed-version issues across the test suite.
  • The change is isolated to a single file (Directory.Packages.props), the centralized NuGet version management file, which is exactly the right location for this kind of update.
  • This is a Renovate-automated MINOR semver bump covering 17+ releases from 1.19.74.

Notable changes across the full 1.19.74 → 1.36.0 range:

  • Bug fixes for ITestSkippedEventReceiver, BeforeEvery/AfterEvery hooks, async execution-context leaks, and HTML report rendering
  • Performance improvements: reduced allocations in hot paths, Lock replacing object-lock, async state machine overhead reduction
  • New assertions: numeric tolerance, string length ranges, IsEquivalentTo for Memory<T>/ReadOnlyMemory<T>, covariant interface assertions
  • [Obsolete] members restored to prevent silent consumer breakage
  • DistributedContext support additions

No concerns. CI is currently running; assuming pipeline checks pass, 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)

This PR has been updated since the previous review: the TUnit packages are now bumped from 1.19.741.36.0 (the prior review covered 1.19.741.22.19).

Assessment: Looks Good

Change quality:

  • All three interdependent TUnit packages (TUnit, TUnit.Assertions, TUnit.Core) remain in lockstep at 1.36.0 — critical for test framework packages where version mismatches can cause subtle runtime failures.
  • The change is correctly confined to Directory.Packages.props, the centralized NuGet version management file.
  • This is a Renovate-automated update — no manual mistakes to look for.

Scope of the jump (1.22.19 → 1.36.0):
This is a larger span than the previous review covered. Across these ~14 minor versions, the TUnit changelog shows:

  • Bug fixes in HTML reporting, trace rendering, and assertion edge cases
  • Incremental assertion additions (e.g. IsEquivalentTo improvements, numeric tolerances)
  • No breaking changes indicated across the release notes

No concerns: This remains a routine, safe dependency update. CI validation is the right gate here.

Note: No issues from the previous review remain open — the prior comment flagged no action items, and none are introduced by this revision.

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