Skip to content

fix: #4812 incorrect TUnit0001 on custom generic IDataSourceAttribute#4814

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

fix: #4812 incorrect TUnit0001 on custom generic IDataSourceAttribute#4814
thomhurst merged 1 commit intothomhurst:mainfrom
ascott18:ascott/4812

Conversation

@ascott18
Copy link
Contributor

Description

This PR fixes TUnit0001 being raised against type parameters that the analyzer can't conclusively know are affecting the actual test argument parameters.

Related Issue

Fixes #4812

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.

This is a well-crafted fix that correctly addresses the false positive analyzer warnings for custom generic data source attributes. The solution appropriately removes the problematic fallback logic that incorrectly assumed all generic type parameters on attributes correspond to test parameter types, deferring to runtime validation instead.

@thomhurst
Copy link
Owner

Thanks!

@thomhurst thomhurst merged commit 549a089 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]: TUnit0001 raised on custom generic data source attributes

2 participants