Skip to content

fix: #4804 preserve tolerance parameters from xunit Assert.Equal#4815

Merged
thomhurst merged 1 commit intothomhurst:mainfrom
ascott18:ascott/4804
Feb 15, 2026
Merged

fix: #4804 preserve tolerance parameters from xunit Assert.Equal#4815
thomhurst merged 1 commit intothomhurst:mainfrom
ascott18:ascott/4804

Conversation

@ascott18
Copy link
Contributor

Description

Preserves tolerance parameters when converting xunit's Assert.Equal when possible, instead of dropping them. When not possible, captures them in a TODO comment.

Related Issue

Fixes #4804

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Performance improvement
  • Refactoring (no functional changes)

Checklist

Required

  • I have read the Contributing Guidelines
  • If this is a new feature, I started a discussion first and received agreement
  • My code follows the project's code style (modern C# syntax, proper naming conventions)
  • I have written tests that prove my fix is effective or my feature works

TUnit-Specific Requirements

  • Dual-Mode Implementation: If this change affects test discovery/execution, I have implemented it in BOTH:
    • Source Generator path (TUnit.Core.SourceGenerator)
    • Reflection path (TUnit.Engine)
  • Snapshot Tests: If I changed source generator output or public APIs:
    • I ran TUnit.Core.SourceGenerator.Tests and/or TUnit.PublicAPI tests
    • I reviewed the .received.txt files and accepted them as .verified.txt
    • I committed the updated .verified.txt files
  • Performance: If this change affects hot paths (test discovery, execution, assertions):
    • I minimized allocations and avoided LINQ in hot paths
    • I cached reflection results where appropriate
  • AOT Compatibility: If this change uses reflection:
    • I added appropriate [DynamicallyAccessedMembers] annotations
    • I verified the change works with dotnet publish -p:PublishAot=true

Testing

  • All existing tests pass (dotnet test)
  • I have added tests that cover my changes
  • I have tested both source-generated and reflection modes (if applicable)

Additional Notes

@claude
Copy link
Contributor

claude bot commented Feb 15, 2026

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

The PR correctly preserves tolerance and precision parameters when migrating xUnit's Assert.Equal to TUnit, with proper handling of both convertible cases (using .Within()) and edge cases (adding TODO comments for incompatible parameters). The implementation uses semantic analysis appropriately and includes comprehensive test coverage.

@thomhurst
Copy link
Owner

Thanks!

@thomhurst thomhurst merged commit 42a3faf into thomhurst:main Feb 15, 2026
8 of 11 checks passed
This was referenced Feb 16, 2026
This was referenced Feb 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: xUnit code fixer drops precision / .Within(TimeSpan) from DateTime/DateTimeOffset Equals

2 participants