fix: add attributes only when they are available#846
Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR addresses attribute availability issues by conditionally applying DoesNotReturn and StackTraceHidden attributes only when they are available in the target framework. The changes improve compatibility across different .NET versions and prevent compilation errors when these attributes don't exist.
Key changes:
- Modified the source generator to check for attribute availability before applying them
- Changed polyfill types from
publictointernalto avoid exposing implementation details - Added polyfill implementations for
RangeandIndextypes in the main library
Reviewed Changes
Copilot reviewed 6 out of 10 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| Source/aweXpect/Polyfills/Range.cs | Added polyfill implementation of Range struct for NETSTANDARD2_0 |
| Source/aweXpect/Polyfills/Index.cs | Added polyfill implementation of Index struct for NETSTANDARD2_0 |
| Source/aweXpect.Frameworks/FrameworkGenerator.cs | Modified to conditionally apply attributes based on availability, refactored initialization logic |
| Source/aweXpect.Core/Core/Polyfills/StackTraceHiddenAttribute.cs | Changed from public to internal visibility |
| Source/aweXpect.Core/Core/Polyfills/Range.cs | Changed from public to internal visibility |
| Source/aweXpect.Core/Core/Polyfills/Index.cs | Changed from public to internal visibility |
Files not reviewed (4)
- .idea/.idea.aweXpect/.idea/copilot.data.migration.agent.xml: Language not supported
- .idea/.idea.aweXpect/.idea/copilot.data.migration.ask.xml: Language not supported
- .idea/.idea.aweXpect/.idea/copilot.data.migration.ask2agent.xml: Language not supported
- .idea/.idea.aweXpect/.idea/copilot.data.migration.edit.xml: Language not supported
🚀 Benchmark ResultsDetails
|
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 8 out of 12 changed files in this pull request and generated 2 comments.
Files not reviewed (4)
- .idea/.idea.aweXpect/.idea/copilot.data.migration.agent.xml: Language not supported
- .idea/.idea.aweXpect/.idea/copilot.data.migration.ask.xml: Language not supported
- .idea/.idea.aweXpect/.idea/copilot.data.migration.ask2agent.xml: Language not supported
- .idea/.idea.aweXpect/.idea/copilot.data.migration.edit.xml: Language not supported
8d76c17 to
6856d47
Compare
|
Test Results 7 files - 6 7 suites - 6 48s ⏱️ - 1m 23s Results for commit 6856d47. ± Comparison against base commit a4620c7. This pull request removes 16252 and adds 101 tests. Note that renamed tests count towards both. |
|
This is addressed in release v2.29.0. |
Updated [aweXpect](https://github.com/aweXpect/aweXpect) from 2.26.0 to 2.31.0. <details> <summary>Release notes</summary> _Sourced from [aweXpect's releases](https://github.com/aweXpect/aweXpect/releases)._ ## 2.31.0 ## What's Changed * chore: Bump the xunit group with 2 updates by @dependabot[bot] in Testably/aweXpect#883 * chore: Bump apexskier/github-release-commenter from 1.3.6 to 1.4.1 by @dependabot[bot] in Testably/aweXpect#884 * chore: Bump SharpCompress from 0.42.1 to 0.44.3 by @dependabot[bot] in Testably/aweXpect#886 * docs: support nested directories in extensions by @vbreuss in Testably/aweXpect#887 * chore: Bump the tunit group with 2 updates by @dependabot[bot] in Testably/aweXpect#888 * chore: Bump SharpCompress from 0.44.3 to 0.44.5 by @dependabot[bot] in Testably/aweXpect#889 * chore: Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in Testably/aweXpect#898 * chore: Bump actions/download-artifact from 7 to 8 by @dependabot[bot] in Testably/aweXpect#899 * chore: Bump the mstest group with 2 updates by @dependabot[bot] in Testably/aweXpect#890 * chore: Bump the nunit group with 1 update by @dependabot[bot] in Testably/aweXpect#895 * chore: Bump coverlet.collector from 6.0.4 to 8.0.0 by @dependabot[bot] in Testably/aweXpect#897 * chore: update docusaurus webpage by @vbreuss in Testably/aweXpect#900 * refactor: fix build warnings by @vbreuss in Testably/aweXpect#902 * feat: give access to `Timeout` and `CancellationToken` in the `ExpectationBuilder` by @vbreuss in Testably/aweXpect#901 * chore: Bump Microsoft.Testing.Extensions.CodeCoverage from 18.3.2 to 18.5.2 by @dependabot[bot] in Testably/aweXpect#906 * chore: Bump Microsoft.NET.Test.Sdk from 18.0.1 to 18.3.0 by @dependabot[bot] in Testably/aweXpect#905 * chore: Bump the nunit group with 2 updates by @dependabot[bot] in Testably/aweXpect#903 * chore: bump aweXpect.Core to v2.28.0 by @vbreuss in Testably/aweXpect#909 * refactor: migrate to slnx format by @vbreuss in Testably/aweXpect#908 **Full Changelog**: Testably/aweXpect@v2.30.0...v2.31.0 ## 2.30.0 ## What's Changed * chore: Bump actions/checkout from 5 to 6 by @dependabot[bot] in Testably/aweXpect#850 * chore: Bump the mstest group with 2 updates by @dependabot[bot] in Testably/aweXpect#851 * chore: Bump the tunit group with 3 updates by @dependabot[bot] in Testably/aweXpect#853 * chore: Bump Microsoft.NET.Test.Sdk from 18.0.0 to 18.0.1 by @dependabot[bot] in Testably/aweXpect#854 * chore: Bump Microsoft.Testing.Extensions.TrxReport from 2.0.1 to 2.0.2 by @dependabot[bot] in Testably/aweXpect#855 * chore: update docusaurus dependencies by @vbreuss in Testably/aweXpect#856 * chore: bump nuke to v10.1.0 by @vbreuss in Testably/aweXpect#862 * chore: Bump BenchmarkDotNet from 0.15.6 to 0.15.8 by @dependabot[bot] in Testably/aweXpect#860 * chore: Bump PublicApiGenerator from 11.5.0 to 11.5.3 by @dependabot[bot] in Testably/aweXpect#861 * chore: Bump PublicApiGenerator from 11.5.3 to 11.5.4 by @dependabot[bot] in Testably/aweXpect#864 * chore: Bump the nunit group with 1 update by @dependabot[bot] in Testably/aweXpect#863 * chore: Bump the xunit group with 2 updates by @dependabot[bot] in Testably/aweXpect#858 * chore: Bump actions/download-artifact from 6 to 7 by @dependabot[bot] in Testably/aweXpect#866 * chore: Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in Testably/aweXpect#867 * chore: Bump the tunit group with 2 updates by @dependabot[bot] in Testably/aweXpect#868 * chore: Bump SharpCompress from 0.41.0 to 0.42.1 by @dependabot[bot] in Testably/aweXpect#869 * chore: Bump the nunit group with 1 update by @dependabot[bot] in Testably/aweXpect#876 * chore: Bump Microsoft.Testing.Extensions.CodeCoverage and 2 others by @dependabot[bot] in Testably/aweXpect#875 * feat: add implicit conversion to `Times` by @vbreuss in Testably/aweXpect#878 * chore: Bump TUnit and TUnit.Assertions by @dependabot[bot] in Testably/aweXpect#879 * feat: support async `Because` reason by @vbreuss in Testably/aweXpect#880 * chore: bump aweXpect.Core to v2.27.0 by @vbreuss in Testably/aweXpect#881 **Full Changelog**: Testably/aweXpect@v2.29.0...v2.30.0 ## 2.29.0 ## What's Changed * chore: update aweXpect to v2.28.0 by @vbreuss in Testably/aweXpect#841 * refactor: move needs from pack to push by @vbreuss in Testably/aweXpect#840 * chore: Bump the tunit group with 2 updates by @dependabot[bot] in Testably/aweXpect#842 * chore: Bump BenchmarkDotNet from 0.15.5 to 0.15.6 by @dependabot[bot] in Testably/aweXpect#843 * chore: Bump PublicApiGenerator from 11.4.6 to 11.5.0 by @dependabot[bot] in Testably/aweXpect#844 * chore: Bump SharpCompress from 0.39.0 to 0.41.0 by @dependabot[bot] in Testably/aweXpect#845 * feat: add support for .NET 10 by @vbreuss in Testably/aweXpect#794 * fix: disable failing mutation tests by @vbreuss in Testably/aweXpect#847 * fix: add attributes only when they are available by @vbreuss in Testably/aweXpect#846 * chore: bump aweXpect.Core to v2.26.0 by @vbreuss in Testably/aweXpect#848 * fix: build error with MTP mode of dotnet test by @vbreuss in Testably/aweXpect#849 **Full Changelog**: Testably/aweXpect@v2.28.0...v2.29.0 ## 2.28.0 ## What's Changed * chore: update aweXpect to v2.27.1 by @vbreuss in Testably/aweXpect#818 * docs: document Mockolate by @vbreuss in Testably/aweXpect#828 * chore: Bump actions/setup-node from 5 to 6 by @dependabot[bot] in Testably/aweXpect#819 * chore: Bump actions/download-artifact from 5 to 6 by @dependabot[bot] in Testably/aweXpect#822 * chore: Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in Testably/aweXpect#823 * chore: Bump BenchmarkDotNet from 0.14.0 to 0.15.4 by @dependabot[bot] in Testably/aweXpect#824 * chore: Bump FluentAssertions from 8.2.0 to 8.8.0 by @dependabot[bot] in Testably/aweXpect#825 * docs: fix docusaurus warning by @vbreuss in Testably/aweXpect#829 * chore: Bump Microsoft.NET.Test.Sdk from 17.14.1 to 18.0.0 by @dependabot[bot] in Testably/aweXpect#826 * chore: Bump Microsoft.Testing.Extensions.CodeCoverage from 17.14.2 to 18.1.0 by @dependabot[bot] in Testably/aweXpect#827 * chore: update TUnit to v0.88.0 by @vbreuss in Testably/aweXpect#830 * feat: improve test output for dictionary `ContainsKey` by @vbreuss in Testably/aweXpect#835 * chore: Bump the xunit group with 2 updates by @dependabot[bot] in Testably/aweXpect#833 * chore: Bump the nunit group with 1 update by @dependabot[bot] in Testably/aweXpect#831 * chore: Bump BenchmarkDotNet from 0.15.4 to 0.15.5 by @dependabot[bot] in Testably/aweXpect#834 * fix: infinite loop in result contexts by @vbreuss in Testably/aweXpect#836 * fix: use list in `ResultContexts` by @vbreuss in Testably/aweXpect#837 * feat: include actual and expected context in string contains by @vbreuss in Testably/aweXpect#838 * chore: update aweXpect.Core to v2.25.2 by @vbreuss in Testably/aweXpect#839 **Full Changelog**: Testably/aweXpect@v2.27.1...v2.28.0 ## 2.27.1 ## What's Changed * fix: formatting of nested types within generic types by @vbreuss in Testably/aweXpect#815 * refactor: reduce allocations for context by @vbreuss in Testably/aweXpect#816 * chore: bump aweXpect.Core to v2.25.1 by @vbreuss in Testably/aweXpect#817 **Full Changelog**: Testably/aweXpect@v2.27.0...v2.27.1 ## 2.27.0 ## What's Changed * chore: Bump the xunit group with 3 updates by @dependabot[bot] in Testably/aweXpect#800 * chore: Bump the mstest group with 2 updates by @dependabot[bot] in Testably/aweXpect#801 * feat: allow customization of the `MaximumStringLength` by @vbreuss in Testably/aweXpect#802 * chore: update docusaurus to v3.9.1 by @vbreuss in Testably/aweXpect#803 * fix: formatting of nullable types by @vbreuss in Testably/aweXpect#808 * chore: Bump the mstest group with 2 updates by @dependabot[bot] in Testably/aweXpect#805 * chore: Bump the nunit group with 1 update by @dependabot[bot] in Testably/aweXpect#806 * chore: update TUnit to v0.70.0 by @vbreuss in Testably/aweXpect#809 * feat: move framework adapters to source generation by @vbreuss in Testably/aweXpect#810 * coverage: ensure that `NaN` is considered equal to `NaN` by @vbreuss in Testably/aweXpect#811 * chore: bump the aweXpect group by @vbreuss in Testably/aweXpect#812 * chore: update aweXpect.Core to v2.25.0 by @vbreuss in Testably/aweXpect#813 * feat: support MSTest v4 by @vbreuss in Testably/aweXpect#814 **Full Changelog**: Testably/aweXpect@v2.26.0...v2.27.0 Commits viewable in [compare view](Testably/aweXpect@v2.26.0...v2.31.0). </details> Updated [aweXpect.Core](https://github.com/aweXpect/aweXpect) from 2.24.0 to 2.28.0. <details> <summary>Release notes</summary> _Sourced from [aweXpect.Core's releases](https://github.com/aweXpect/aweXpect/releases)._ ## 2.28.0 ## What's Changed * chore: update aweXpect to v2.27.1 by @vbreuss in Testably/aweXpect#818 * docs: document Mockolate by @vbreuss in Testably/aweXpect#828 * chore: Bump actions/setup-node from 5 to 6 by @dependabot[bot] in Testably/aweXpect#819 * chore: Bump actions/download-artifact from 5 to 6 by @dependabot[bot] in Testably/aweXpect#822 * chore: Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in Testably/aweXpect#823 * chore: Bump BenchmarkDotNet from 0.14.0 to 0.15.4 by @dependabot[bot] in Testably/aweXpect#824 * chore: Bump FluentAssertions from 8.2.0 to 8.8.0 by @dependabot[bot] in Testably/aweXpect#825 * docs: fix docusaurus warning by @vbreuss in Testably/aweXpect#829 * chore: Bump Microsoft.NET.Test.Sdk from 17.14.1 to 18.0.0 by @dependabot[bot] in Testably/aweXpect#826 * chore: Bump Microsoft.Testing.Extensions.CodeCoverage from 17.14.2 to 18.1.0 by @dependabot[bot] in Testably/aweXpect#827 * chore: update TUnit to v0.88.0 by @vbreuss in Testably/aweXpect#830 * feat: improve test output for dictionary `ContainsKey` by @vbreuss in Testably/aweXpect#835 * chore: Bump the xunit group with 2 updates by @dependabot[bot] in Testably/aweXpect#833 * chore: Bump the nunit group with 1 update by @dependabot[bot] in Testably/aweXpect#831 * chore: Bump BenchmarkDotNet from 0.15.4 to 0.15.5 by @dependabot[bot] in Testably/aweXpect#834 * fix: infinite loop in result contexts by @vbreuss in Testably/aweXpect#836 * fix: use list in `ResultContexts` by @vbreuss in Testably/aweXpect#837 * feat: include actual and expected context in string contains by @vbreuss in Testably/aweXpect#838 * chore: update aweXpect.Core to v2.25.2 by @vbreuss in Testably/aweXpect#839 **Full Changelog**: Testably/aweXpect@v2.27.1...v2.28.0 ## 2.27.1 ## What's Changed * fix: formatting of nested types within generic types by @vbreuss in Testably/aweXpect#815 * refactor: reduce allocations for context by @vbreuss in Testably/aweXpect#816 * chore: bump aweXpect.Core to v2.25.1 by @vbreuss in Testably/aweXpect#817 **Full Changelog**: Testably/aweXpect@v2.27.0...v2.27.1 ## 2.27.0 ## What's Changed * chore: Bump the xunit group with 3 updates by @dependabot[bot] in Testably/aweXpect#800 * chore: Bump the mstest group with 2 updates by @dependabot[bot] in Testably/aweXpect#801 * feat: allow customization of the `MaximumStringLength` by @vbreuss in Testably/aweXpect#802 * chore: update docusaurus to v3.9.1 by @vbreuss in Testably/aweXpect#803 * fix: formatting of nullable types by @vbreuss in Testably/aweXpect#808 * chore: Bump the mstest group with 2 updates by @dependabot[bot] in Testably/aweXpect#805 * chore: Bump the nunit group with 1 update by @dependabot[bot] in Testably/aweXpect#806 * chore: update TUnit to v0.70.0 by @vbreuss in Testably/aweXpect#809 * feat: move framework adapters to source generation by @vbreuss in Testably/aweXpect#810 * coverage: ensure that `NaN` is considered equal to `NaN` by @vbreuss in Testably/aweXpect#811 * chore: bump the aweXpect group by @vbreuss in Testably/aweXpect#812 * chore: update aweXpect.Core to v2.25.0 by @vbreuss in Testably/aweXpect#813 * feat: support MSTest v4 by @vbreuss in Testably/aweXpect#814 **Full Changelog**: Testably/aweXpect@v2.26.0...v2.27.0 ## 2.26.0 ## What's Changed * feat: add string property result by @vbreuss in Testably/aweXpect#795 * feat: support direct check for boolean is `true` by @vbreuss in Testably/aweXpect#797 * chore: update aweXpect.Core to v2.24.0 by @vbreuss in Testably/aweXpect#798 **Full Changelog**: Testably/aweXpect@v2.25.0...v2.26.0 ## 2.25.0 ## What's Changed * refactor!: make `IStringMatchType` asynchronous by @vbreuss in Testably/aweXpect#787 * refactor: make `EquivalencyExpectationBuilder` public by @vbreuss in Testably/aweXpect#788 * chore: bump aweXpect.Core to v2.22.0 by @vbreuss in Testably/aweXpect#789 * fix: handle `null` in `It.Is` by @vbreuss in Testably/aweXpect#790 * fix: correct error message for prefix/suffix of empty strings by @vbreuss in Testably/aweXpect#791 * chore: bump the aweXpect group by @vbreuss in Testably/aweXpect#792 * feat: add `WithoutMessage` for delegate assertions by @vbreuss in Testably/aweXpect#793 **Full Changelog**: Testably/aweXpect@v2.24.0...v2.25.0 Commits viewable in [compare view](Testably/aweXpect@v2.24.0...v2.28.0). </details>

This PR addresses attribute availability issues by conditionally applying
DoesNotReturnandStackTraceHiddenattributes only when they are available in the target framework. The changes improve compatibility across different .NET versions and prevent compilation errors when these attributes don't exist.Key changes:
publictointernalto avoid exposing implementation detailsRangeandIndextypes in the main library