-
Notifications
You must be signed in to change notification settings - Fork 1
V11.0.0/launch #45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
V11.0.0/launch #45
Conversation
➖ remove support for net8.0 TFM ⬆️ bump dependencies
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughThe PR upgrades targets to .NET 10, migrates tests and packages to xUnit v3, converts test lifecycle APIs from Task to ValueTask, bumps multiple package and tooling versions, updates CI workflows and DocFX Docker images, and refreshes release/docs across several packages. Changes
Sequence Diagram(s)sequenceDiagram
participant TestClass as Test class
participant Framework as xUnit runtime
rect rgb(240, 220, 220)
Note over TestClass,Framework: Before (xUnit v2 / Task-based)
TestClass->>Framework: InitializeAsync(): Task
activate Framework
Framework-->>TestClass: Task.CompletedTask
deactivate Framework
TestClass->>Framework: DisposeAsync(): Task
end
rect rgb(220, 240, 220)
Note over TestClass,Framework: After (xUnit v3 / ValueTask-based)
TestClass->>Framework: InitializeAsync(): ValueTask
activate Framework
Framework-->>TestClass: default (ValueTask)
deactivate Framework
Note over TestClass: DisposeAsync handled as ValueTask (implicit/virtual)
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes
Possibly related PRs
Suggested labels
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (6)
🚧 Files skipped from review as they are similar to previous changes (3)
🧰 Additional context used🧠 Learnings (2)📓 Common learnings📚 Learning: 2024-10-09T14:10:40.721ZApplied to files:
🧬 Code graph analysis (1)src/Codebelt.Extensions.Xunit.Hosting/HostFixture.cs (2)
🪛 LanguageTool.nuget/Codebelt.Extensions.Xunit.Hosting.AspNetCore/README.md[style] ~14-~14: ‘in conjunction with’ might be wordy. Consider a shorter alternative. (EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH) ⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
🔇 Additional comments (3)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This major release upgrades the codebase to support .NET 10 (LTS) and xUnit v3, while removing .NET 8 support. The changes introduce breaking API changes due to xUnit v3 migration and update all dependencies to their latest compatible versions.
Key changes:
- Migration from xUnit v2 to xUnit v3 with breaking API changes (Task → ValueTask for InitializeAsync)
- Updated target frameworks from net8.0/net9.0 to net9.0/net10.0 across all projects
- Upgraded dependencies including Cuemon packages, Microsoft.NET.Test.Sdk, and xUnit-related packages
- Updated CI/CD workflows to use v3 of reusable workflows
Reviewed Changes
Copilot reviewed 55 out of 55 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| Directory.Build.props | Updated target frameworks to net10.0/net9.0, added OutputType=Exe for test projects |
| Directory.Packages.props | Upgraded all package versions, migrated to xUnit v3 packages |
| src/Codebelt.Extensions.Xunit/Test.cs | Changed InitializeAsync return type from Task to ValueTask |
| src/Codebelt.Extensions.Xunit.Hosting/HostFixture.cs | Changed InitializeAsync return type from Task to ValueTask |
| Multiple test files | Removed Xunit.Abstractions imports, updated to Xunit or Xunit.v3 namespaces |
| Multiple test files | Updated TestCaseOrderer attribute to use typeof() instead of Name/Assembly pattern |
| CHANGELOG.md | Added v11.0.0 release notes with xUnit v3 migration warnings |
| Multiple README files | Updated platform support statements to reflect .NET 9/10 support |
| .github/workflows/pipelines.yml | Updated workflow references to v3, commented out CodeQL job |
| testenvironments.json | Updated Docker image to include .NET 10 support |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #45 +/- ##
==========================================
- Coverage 92.09% 91.62% -0.48%
==========================================
Files 48 48
Lines 949 943 -6
Branches 122 122
==========================================
- Hits 874 864 -10
- Misses 65 69 +4
Partials 10 10 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (9)
test/Codebelt.Extensions.Xunit.Hosting.Tests/Assets/ValidHostTest.cs (1)
1-3: Consider adopting standard C# using directive ordering.The current order places external libraries (Microsoft.Extensions.DependencyInjection) before system namespaces (System), which deviates from the standard C# convention: System namespaces → external namespaces → static using statements.
Apply this diff to align with C# conventions:
-using Microsoft.Extensions.DependencyInjection; -using System; +using System; +using Microsoft.Extensions.DependencyInjection; using static System.Net.Mime.MediaTypeNames;.nuget/Codebelt.Extensions.Xunit.Hosting.AspNetCore/PackageReleaseNotes.txt (1)
1-6: Consider documenting breaking changes from the base package.The v11.0.0 release notes mention dependency upgrades but don't document the breaking changes from the base
Codebelt.Extensions.Xunit.Hostingpackage. Per the PR objectives,InitializeAsyncnow returnsValueTaskinstead ofTask, which affects consumers who override these methods in classes derived from this package (e.g.,WebHostTest,ManagedWebHostFixture).Consider adding a "Breaking Changes" section similar to what's documented in the base package:
Version 11.0.0 Availability: .NET 10 and .NET 9 +# Breaking Changes +- CHANGED InitializeAsync method on the HostFixture class now uses ValueTask instead of Task due to xUnit v3 migration + # ALM - CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs).nuget/Codebelt.Extensions.Xunit.Hosting/README.md (1)
5-9: Minor: Fix double space in bullet points.Lines 6 has an extra space before the period:
.NET 9" and ".NET 10". This appears to be consistent across multiple README files in the PR. Consider fixing the whitespace for consistency..nuget/Codebelt.Extensions.Xunit.Hosting.AspNetCore/README.md (2)
5-8: Minor: Fix double space in bullet points (consistent across other READMEs).Line 6 has an extra space before the period, matching the same issue in other README files. Consider fixing the whitespace for consistency across the package documentation.
14-14: Optional: Simplify "in conjunction with" to "with".The phrase "in conjunction with" is more concise as "with" and reads more naturally. Consider simplifying: "...used with Microsoft Dependency Injection."
.nuget/Codebelt.Extensions.Xunit/README.md (1)
5-9: Minor: Fix double space in bullet points (consistent across other READMEs).Line 6 contains extra whitespace:
.NET 9" and ".NET 10". This matches the same formatting issue in other README files in the PR. Consider correcting for consistency.README.md (1)
9-14: Minor: Fix double space in bullet points (consistent across project).Line 10 has extra whitespace:
.NET 9" and ".NET 10". This same formatting issue appears across multiple README files (hosting, aspnetcore, xunit packages). Consider fixing all occurrences for consistency.CHANGELOG.md (1)
16-29: Consider a more neutral tone for the warning block.The technical concerns about xUnit v3's design choices (semantic versioning, exe requirements) are valid and worth communicating to users. However, phrases like "a bit puzzling," "All good practices has been put aside," "Its a mess," and "I just needed to vent my frustration" introduce subjective opinions into what is typically a factual changelog.
Consider reframing to focus on the technical implications while maintaining the warning intent:
> [!WARNING] -> Design choices made in xUnit v3 are a bit puzzling to me, especially around something as important as versioning and requirement for executable projects. +> xUnit v3 introduces significant design changes around versioning and project structure that may impact your workflow. > -> All good practices has been put aside, and for the majority of new packages, major version is baked into the package name itself (e.g., `xunit.v3` instead of just `xunit`). +> The majority of new packages embed the major version in the package name itself (e.g., `xunit.v3` instead of just `xunit`), deviating from traditional semantic versioning practices. > -> Semantic Versioning is all about conveying meaning and intent through version numbers, and this approach introduces unnecessary redundancy and makes long-term maintenance less smooth. Its a mess that could lead others down a slippery slope of wrongdoings due to the popularity of the framework. +> This approach introduces redundancy and may complicate long-term maintenance and version management. > -> Another unfortunate design choice is the requirement of executable projects (i.e., output type `exe` instead of `library`). This has implications when you have optimized your CI to not waste CPU cycles on restoring/building test projects (build once strategy). +> Test projects now require output type `exe` instead of `library`. This has implications for CI pipelines optimized to skip test project builds (build once strategy). > > Updating to v11.0.0 of this library should not provide issues for you as a consumer, but you should expect consequence changes related to xUnit v3. Because of this, I do recommend familiarizing yourself with the [Migrating Unit Tests from xUnit v2 to v3](https://xunit.net/docs/getting-started/v3/migration) guide. > > It's also worth reading the [What's New in xUnit v3](https://xunit.net/docs/getting-started/v3/whats-new) document to get a better understanding of the changes and improvements introduced. -> -> That written, xUnit will continue to remain my preferred test framework for .NET, I just needed to vent my frustration and warn you about the pitfalls of xUnit v3.src/Codebelt.Extensions.Xunit.Hosting/HostFixture.cs (1)
187-191: Update the XML doc to match the ValueTask return type.The
<returns>tag still referencesTask, which is outdated now thatInitializeAsyncreturnsValueTask. Please correct the documentation to reflect the current contract.Apply this diff to fix the XML documentation:
- /// <returns>A <see cref="Task"/> that represents the asynchronous operation.</returns> + /// <returns>A <see cref="ValueTask"/> that represents the asynchronous operation.</returns>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (55)
.docfx/Dockerfile.docfx(1 hunks).docfx/docfx.json(1 hunks).docfx/includes/availability-default.md(1 hunks).docfx/includes/availability-modern.md(1 hunks).github/workflows/pipelines.yml(5 hunks).nuget/Codebelt.Extensions.Xunit.App/PackageReleaseNotes.txt(1 hunks).nuget/Codebelt.Extensions.Xunit.App/README.md(1 hunks).nuget/Codebelt.Extensions.Xunit.Hosting.AspNetCore/PackageReleaseNotes.txt(1 hunks).nuget/Codebelt.Extensions.Xunit.Hosting.AspNetCore/README.md(1 hunks).nuget/Codebelt.Extensions.Xunit.Hosting/PackageReleaseNotes.txt(1 hunks).nuget/Codebelt.Extensions.Xunit.Hosting/README.md(1 hunks).nuget/Codebelt.Extensions.Xunit/PackageReleaseNotes.txt(1 hunks).nuget/Codebelt.Extensions.Xunit/README.md(1 hunks)CHANGELOG.md(1 hunks)Directory.Build.props(3 hunks)Directory.Packages.props(2 hunks)README.md(1 hunks)src/Codebelt.Extensions.Xunit.App/Codebelt.Extensions.Xunit.App.csproj(1 hunks)src/Codebelt.Extensions.Xunit.Hosting.AspNetCore/Codebelt.Extensions.Xunit.Hosting.AspNetCore.csproj(1 hunks)src/Codebelt.Extensions.Xunit.Hosting.AspNetCore/MinimalWebHostTest.cs(0 hunks)src/Codebelt.Extensions.Xunit.Hosting.AspNetCore/WebHostTest.cs(1 hunks)src/Codebelt.Extensions.Xunit.Hosting/HostFixture.cs(1 hunks)src/Codebelt.Extensions.Xunit.Hosting/HostTest.cs(0 hunks)src/Codebelt.Extensions.Xunit.Hosting/MinimalHostTest.cs(0 hunks)src/Codebelt.Extensions.Xunit.Hosting/ServiceCollectionExtensions.cs(1 hunks)src/Codebelt.Extensions.Xunit.Hosting/XunitTestLogger.cs(1 hunks)src/Codebelt.Extensions.Xunit.Hosting/XunitTestLoggerProvider.cs(1 hunks)src/Codebelt.Extensions.Xunit/Codebelt.Extensions.Xunit.csproj(1 hunks)src/Codebelt.Extensions.Xunit/ITestOutputHelperAccessor.cs(1 hunks)src/Codebelt.Extensions.Xunit/Test.cs(1 hunks)src/Codebelt.Extensions.Xunit/TestOutputHelperAccessor.cs(1 hunks)src/Codebelt.Extensions.Xunit/TestOutputHelperExtensions.cs(1 hunks)test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests.csproj(1 hunks)test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/ManagedWebHostFixtureTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/MinimalMvcWebHostTestTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/MinimalWebHostTestFactoryTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/MinimalWebHostTestTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/MvcWebHostTestTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/ServiceCollectionExtensionsTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/WebHostTestFactoryTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/WebHostTestTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.Tests/Assets/MinimalValidHostTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.Tests/Assets/ValidHostTest.cs(1 hunks)test/Codebelt.Extensions.Xunit.Hosting.Tests/Codebelt.Extensions.Xunit.Hosting.Tests.csproj(1 hunks)test/Codebelt.Extensions.Xunit.Hosting.Tests/HostTestFactoryTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.Tests/HostTestTest.cs(1 hunks)test/Codebelt.Extensions.Xunit.Hosting.Tests/ManagedHostFixtureTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.Tests/MinimalHostFixtureTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.Tests/MinimalHostTestFactoryTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Hosting.Tests/MinimalHostTestTest.cs(1 hunks)test/Codebelt.Extensions.Xunit.Hosting.Tests/ServiceCollectionExtensions.cs(0 hunks)test/Codebelt.Extensions.Xunit.Tests/DisposableTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Tests/StringExtensionsTest.cs(0 hunks)test/Codebelt.Extensions.Xunit.Tests/TestTest.cs(2 hunks)testenvironments.json(1 hunks)
💤 Files with no reviewable changes (19)
- test/Codebelt.Extensions.Xunit.Hosting.Tests/MinimalHostFixtureTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.Tests/MinimalHostTestFactoryTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/WebHostTestFactoryTest.cs
- src/Codebelt.Extensions.Xunit.Hosting.AspNetCore/MinimalWebHostTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/WebHostTestTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.Tests/ServiceCollectionExtensions.cs
- test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/ManagedWebHostFixtureTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/MinimalWebHostTestFactoryTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/MinimalMvcWebHostTestTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.Tests/ManagedHostFixtureTest.cs
- src/Codebelt.Extensions.Xunit.Hosting/MinimalHostTest.cs
- src/Codebelt.Extensions.Xunit.Hosting/HostTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/MvcWebHostTestTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/MinimalWebHostTestTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.Tests/Assets/MinimalValidHostTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/ServiceCollectionExtensionsTest.cs
- test/Codebelt.Extensions.Xunit.Tests/StringExtensionsTest.cs
- test/Codebelt.Extensions.Xunit.Hosting.Tests/HostTestFactoryTest.cs
- test/Codebelt.Extensions.Xunit.Tests/DisposableTest.cs
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: gimlichael
Repo: codebeltnet/xunit PR: 17
File: src/Codebelt.Extensions.Xunit.Hosting/Codebelt.Extensions.Xunit.Hosting.csproj:22-26
Timestamp: 2024-10-09T14:10:40.721Z
Learning: In the `src/Codebelt.Extensions.Xunit.Hosting/Codebelt.Extensions.Xunit.Hosting.csproj` file, only certain .NET 8 packages are available in version 8.0.1, while others remain at 8.0.0, so package versions may differ due to availability.
📚 Learning: 2024-10-09T14:10:40.721Z
Learnt from: gimlichael
Repo: codebeltnet/xunit PR: 17
File: src/Codebelt.Extensions.Xunit.Hosting/Codebelt.Extensions.Xunit.Hosting.csproj:22-26
Timestamp: 2024-10-09T14:10:40.721Z
Learning: In the `src/Codebelt.Extensions.Xunit.Hosting/Codebelt.Extensions.Xunit.Hosting.csproj` file, only certain .NET 8 packages are available in version 8.0.1, while others remain at 8.0.0, so package versions may differ due to availability.
Applied to files:
src/Codebelt.Extensions.Xunit/TestOutputHelperExtensions.csCHANGELOG.mdtest/Codebelt.Extensions.Xunit.Hosting.Tests/Assets/ValidHostTest.cssrc/Codebelt.Extensions.Xunit.App/Codebelt.Extensions.Xunit.App.csprojREADME.mdsrc/Codebelt.Extensions.Xunit.Hosting.AspNetCore/Codebelt.Extensions.Xunit.Hosting.AspNetCore.csproj.nuget/Codebelt.Extensions.Xunit.Hosting.AspNetCore/README.mdsrc/Codebelt.Extensions.Xunit.Hosting/HostFixture.cstest/Codebelt.Extensions.Xunit.Hosting.Tests/MinimalHostTestTest.cs.nuget/Codebelt.Extensions.Xunit.Hosting/README.md.nuget/Codebelt.Extensions.Xunit.Hosting/PackageReleaseNotes.txt.nuget/Codebelt.Extensions.Xunit.Hosting.AspNetCore/PackageReleaseNotes.txtsrc/Codebelt.Extensions.Xunit.Hosting/XunitTestLogger.cs.nuget/Codebelt.Extensions.Xunit.App/README.mdtest/Codebelt.Extensions.Xunit.Hosting.Tests/HostTestTest.cs.nuget/Codebelt.Extensions.Xunit/README.mdsrc/Codebelt.Extensions.Xunit/Codebelt.Extensions.Xunit.csprojsrc/Codebelt.Extensions.Xunit/Test.cssrc/Codebelt.Extensions.Xunit.Hosting/ServiceCollectionExtensions.cs.nuget/Codebelt.Extensions.Xunit.App/PackageReleaseNotes.txtsrc/Codebelt.Extensions.Xunit.Hosting/XunitTestLoggerProvider.cssrc/Codebelt.Extensions.Xunit.Hosting.AspNetCore/WebHostTest.cstest/Codebelt.Extensions.Xunit.Tests/TestTest.csDirectory.Packages.propssrc/Codebelt.Extensions.Xunit/TestOutputHelperAccessor.csDirectory.Build.propstest/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests.csprojtest/Codebelt.Extensions.Xunit.Hosting.Tests/Codebelt.Extensions.Xunit.Hosting.Tests.csprojsrc/Codebelt.Extensions.Xunit/ITestOutputHelperAccessor.cs.docfx/includes/availability-default.md.nuget/Codebelt.Extensions.Xunit/PackageReleaseNotes.txt
📚 Learning: 2025-05-23T17:47:54.978Z
Learnt from: gimlichael
Repo: codebeltnet/xunit PR: 35
File: .github/workflows/pipelines.yml:56-56
Timestamp: 2025-05-23T17:47:54.978Z
Learning: In GitHub Actions, when calling reusable workflows with an OS matrix, the matrix OS values can be effectively passed to the reusable workflow using input parameters like `runs-on: ${{ matrix.os }}`, allowing the matrix to control which runner is used in the reusable workflow.
Applied to files:
.github/workflows/pipelines.yml
🧬 Code graph analysis (5)
src/Codebelt.Extensions.Xunit.Hosting/HostFixture.cs (4)
src/Codebelt.Extensions.Xunit/Test.cs (3)
ValueTask(99-102)ValueTask(144-149)ValueTask(155-158)test/Codebelt.Extensions.Xunit.Tests/TestTest.cs (2)
ValueTask(18-22)ValueTask(24-28)test/Codebelt.Extensions.Xunit.Tests/Assets/AsyncDisposable.cs (1)
ValueTask(25-34)test/Codebelt.Extensions.Xunit.Tests/Assets/WemoryStream.cs (2)
ValueTask(9-12)ValueTask(14-18)
test/Codebelt.Extensions.Xunit.Hosting.Tests/MinimalHostTestTest.cs (1)
test/Codebelt.Extensions.Xunit.Hosting.Tests/HostTestTest.cs (1)
TestCaseOrderer(14-98)
test/Codebelt.Extensions.Xunit.Hosting.Tests/HostTestTest.cs (1)
test/Codebelt.Extensions.Xunit.Hosting.Tests/MinimalHostTestTest.cs (1)
TestCaseOrderer(14-98)
src/Codebelt.Extensions.Xunit/Test.cs (4)
src/Codebelt.Extensions.Xunit.Hosting/HostFixture.cs (4)
ValueTask(118-128)ValueTask(130-134)ValueTask(177-182)ValueTask(188-191)test/Codebelt.Extensions.Xunit.Tests/TestTest.cs (2)
ValueTask(18-22)ValueTask(24-28)test/Codebelt.Extensions.Xunit.Tests/Assets/AsyncDisposable.cs (1)
ValueTask(25-34)test/Codebelt.Extensions.Xunit.Tests/Assets/WemoryStream.cs (2)
ValueTask(9-12)ValueTask(14-18)
test/Codebelt.Extensions.Xunit.Tests/TestTest.cs (2)
src/Codebelt.Extensions.Xunit.Hosting/HostFixture.cs (4)
ValueTask(118-128)ValueTask(130-134)ValueTask(177-182)ValueTask(188-191)src/Codebelt.Extensions.Xunit/Test.cs (3)
ValueTask(99-102)ValueTask(144-149)ValueTask(155-158)
🪛 LanguageTool
.nuget/Codebelt.Extensions.Xunit.Hosting.AspNetCore/README.md
[style] ~14-~14: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...g that depends on ASP.NET Core and used in conjunction with Microsoft Dependency Injection. The nam...
(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
- GitHub Check: call-pack (Release) / 📦 Pack
- GitHub Check: call-test (ubuntu-24.04, Release) / 🧪 Test
- GitHub Check: call-pack (Debug) / 📦 Pack
- GitHub Check: call-test (ubuntu-24.04, Debug) / 🧪 Test
- GitHub Check: call-test (windows-2022, Release) / 🧪 Test
- GitHub Check: call-test (windows-2022, Debug) / 🧪 Test
- GitHub Check: Agent
- GitHub Check: CodeQL analysis (csharp)
🔇 Additional comments (33)
src/Codebelt.Extensions.Xunit.Hosting/ServiceCollectionExtensions.cs (1)
5-5: Correct namespace migration for xUnit v3.The update from
Xunit.AbstractionstoXunitaligns with xUnit v3's namespace consolidation. All referenced types (ITestOutputHelper, etc.) are available in the new namespace, and the change requires no further adjustments to this file.test/Codebelt.Extensions.Xunit.Hosting.Tests/Assets/ValidHostTest.cs (1)
7-18: Class structure is aligned with xUnit v3 migration.The removal of the
Xunit.Abstractionsusing directive and the simplified class structure are consistent with the xUnit v3 migration. The constructor and base class delegation are correct. The emptyConfigureServicesmethod is acceptable for this test fixture.src/Codebelt.Extensions.Xunit.Hosting.AspNetCore/WebHostTest.cs (1)
4-4: LGTM! Namespace updated for xUnit v3 compatibility.The namespace change from
Xunit.AbstractionstoXunitcorrectly aligns with the xUnit v3 migration described in the PR objectives. TheITestOutputHelperinterface used in the constructors is now properly imported from the consolidated namespace.src/Codebelt.Extensions.Xunit.Hosting/XunitTestLogger.cs (1)
4-4: Incorrect Review CommentThe review comment misidentifies what
ITestOutputHelperAccessoris. It's not a built-in xUnit type but a custom interface defined in theCodebelt.Extensions.Xunitnamespace (not theXunitnamespace). The namespace change fromXunit.AbstractionstoXunitis correct for the built-inITestOutputHelpertype, which is properly imported by the updatedusing Xunit;statement.However, there is a separate issue: the file uses
ITestOutputHelperAccessorwithout importing its namespace (Codebelt.Extensions.Xunit), which would cause a compilation error. This may be a pre-existing issue in the codebase or an oversight in this PR that should be addressed independently.Likely an incorrect or invalid review comment.
testenvironments.json (1)
12-12: LGTM!The Docker image update includes .NET 10.0.100 SDK support, aligning with the PR's objective to add .NET 10 LTS. The minor version bumps for .NET 8 and 9 SDKs are appropriate.
.docfx/includes/availability-modern.md (1)
1-1: LGTM!The availability statement correctly reflects the new platform support (.NET 10 and .NET 9) and removal of .NET 8, consistent with the PR objectives.
.docfx/includes/availability-default.md (1)
1-1: LGTM!The availability statement correctly reflects support for .NET 10, .NET 9, and .NET Standard 2.0, with .NET 8 appropriately removed per the PR objectives.
test/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests/Codebelt.Extensions.Xunit.Hosting.AspNetCore.Tests.csproj (1)
4-4: LGTM!The target framework update to
net10.0;net9.0aligns with the repository-wide migration to .NET 10 and removal of .NET 8 support..docfx/Dockerfile.docfx (2)
1-1: LGTM!The nginx version bump from 1.29.1 to 1.29.3 is a minor update that likely includes bug fixes and improvements for the documentation hosting.
6-6: LGTM!The docfx version bump from 2.78.3 to 2.78.4 is a patch update appropriate for keeping documentation tooling current.
src/Codebelt.Extensions.Xunit.Hosting.AspNetCore/Codebelt.Extensions.Xunit.Hosting.AspNetCore.csproj (1)
4-4: LGTM!The target framework update to
net10.0;net9.0is consistent with the repository-wide migration strategy and aligns with the PR's platform support objectives.src/Codebelt.Extensions.Xunit.Hosting/XunitTestLoggerProvider.cs (1)
5-5: LGTM!The namespace change from
Xunit.AbstractionstoXunitis correct for the xUnit v3 migration. The types used in this file (ITestOutputHelperandITestOutputHelperAccessor) are available in the newXunitnamespace in v3..docfx/docfx.json (1)
17-17: Documentation generation target updated appropriately.The TargetFramework update from net9.0 to net10.0 aligns with the broader .NET 10 LTS adoption across the project. This ensures DocFX generates API documentation targeting the current platform support.
README.md (1)
16-20: Documentation structure improvements look good.The new Documentation section (line 16) and Standalone Packages intro (line 20) enhance README organization and navigation. The additions align well with the updated package and target framework information.
.nuget/Codebelt.Extensions.Xunit/PackageReleaseNotes.txt (1)
1-9: Release notes accurately document Version 11.0.0 breaking changes.The new release entry clearly identifies:
- Target frameworks: .NET 10 and .NET 9 (removes .NET 8 support as per PR objectives)
- Breaking change: Test class InitializeAsync signature change to ValueTask (xUnit v3 alignment)
- ALM updates: Dependencies upgraded for supported frameworks
This aligns with the broader codebase changes and provides consumers with clear migration guidance.
.nuget/Codebelt.Extensions.Xunit.Hosting/PackageReleaseNotes.txt (1)
1-9: Release notes accurately document Version 11.0.0 for Hosting package.The release entry properly identifies:
- Target frameworks: .NET 10, .NET 9, and .NET Standard 2.0 (appropriately broader than the core package)
- Breaking change: HostFixture.InitializeAsync now uses ValueTask (xUnit v3 alignment)
- ALM updates: Dependencies upgraded across all supported frameworks
This provides clear migration guidance for consumers of the Hosting package.
.github/workflows/pipelines.yml (2)
30-30: Workflow reusable job versions upgraded consistently to v3.The build, pack, test, and sonarcloud jobs have been bumped from v2 to v3 workflows (codebeltnet organization). This upgrade aligns with the PR's broader strategy to adopt xUnit v3 and support newer .NET versions. The existing input parameters and matrix handling remain compatible with the v3 workflows.
Also applies to: 44-44, 57-57, 68-68
83-93: CodeQL correctly commented out; deploy dependencies appropriately updated.The CodeQL job is preserved but commented out per PR objectives for future upgrades. The deploy job dependencies have been correctly updated to remove the now-inactive codeql job, maintaining only active upstream dependencies (build, pack, test, sonarcloud, codecov). This keeps the workflow clean without sacrificing the ability to re-enable CodeQL later.
CHANGELOG.md (1)
33-34: LGTM!The breaking changes are clearly documented with specific class names and proper attribution to xUnit v3 migration.
Directory.Build.props (4)
18-18: LGTM!Target frameworks correctly updated to .NET 10 and .NET 9, with .NET Standard 2.0 preserved for backward compatibility.
54-58: LGTM!Platform-specific target framework configurations are correct, with .NET Framework 4.8 support appropriately maintained for Windows test projects.
71-71: LGTM!OutputType correctly set to Exe for test projects, as required by xUnit v3.
76-77: LGTM!Package references correctly updated to xUnit v3 equivalents.
src/Codebelt.Extensions.Xunit/TestOutputHelperExtensions.cs (1)
4-4: LGTM!Using directive correctly updated for xUnit v3, where ITestOutputHelper is now in the Xunit namespace instead of Xunit.Abstractions.
test/Codebelt.Extensions.Xunit.Hosting.Tests/Codebelt.Extensions.Xunit.Hosting.Tests.csproj (1)
19-19: LGTM!Package reference correctly updated to xUnit v3 equivalent (Xunit.v3.Priority).
src/Codebelt.Extensions.Xunit/TestOutputHelperAccessor.cs (1)
2-2: LGTM!Using directive correctly updated for xUnit v3 migration.
.nuget/Codebelt.Extensions.Xunit.App/README.md (1)
5-9: LGTM!Documentation clearly communicates the supported frameworks and aligns with the updated target frameworks across the solution.
src/Codebelt.Extensions.Xunit/Codebelt.Extensions.Xunit.csproj (1)
14-15: LGTM!Package references correctly migrated to xUnit v3 equivalents, with xunit.abstractions appropriately removed as its types are now part of the main Xunit namespace.
test/Codebelt.Extensions.Xunit.Hosting.Tests/MinimalHostTestTest.cs (1)
10-10: LGTM! Clean migration to xUnit v3 API.The namespace and attribute updates correctly migrate from xUnit v2's string-based
TestCaseOrdererAPI to xUnit v3's type-based approach usingtypeof(PriorityOrderer). This pattern is consistently applied across test files (as seen in HostTestTest.cs).Also applies to: 14-14
Directory.Packages.props (4)
7-9: Verify pre-release Cuemon packages are intentional.The Cuemon.* packages are using pre-release version
10.0.0-rc.2. Ensure this is intentional for a major release (V11.0.0) going into the main branch, as pre-release dependencies can introduce stability concerns.
10-10: No action required—version 18.0.1 is valid and current.The verification confirms Microsoft.NET.Test.Sdk version 18.0.1 exists on NuGet and is the latest available version. The original concern that this version seemed "unusually high" is not substantiated. The code is correct as-is.
Likely an incorrect or invalid review comment.
34-40: No issues found — all .NET 10 packages verified as available.All Microsoft.Extensions.* packages (versions 10.0.0) and Microsoft.AspNetCore.TestHost (10.0.0) are confirmed available on NuGet and are the latest versions.
13-13: Verify xUnit v3 package versions are compatible.All specified xunit.v3 packages exist on NuGet. However, verify that the version mismatch is intentional and compatible:
- xunit.v3: 3.1.0 (latest available: 3.2.0)
- xunit.v3.assert: 3.1.0 (latest available: 3.2.0)
- xunit.v3.extensibility.core: 3.2.0
- xunit.v3.runner.console: 3.2.0
- xunit.v3.priority: 1.1.18 (latest)
Consider upgrading xunit.v3 and xunit.v3.assert to 3.2.0 for consistency unless there's a specific compatibility requirement for 3.1.0.
| Version 11.0.0 | ||
| Availability: .NET 10 and .NET 9 | ||
|
|
||
| # ALM | ||
| - CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs) | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion | 🟠 Major
Consider documenting breaking changes in release notes.
Version 11.0.0 is a major release with significant breaking changes (xUnit v3 migration, Task → ValueTask for InitializeAsync, OutputType Exe requirement, .NET 8 removal), but the release notes only mention dependency upgrades. Users who rely on package release notes may miss critical migration information that's documented in CHANGELOG.md.
Consider adding a brief mention of breaking changes or referencing CHANGELOG.md:
Version 11.0.0
Availability: .NET 10 and .NET 9
# ALM
+- CHANGED Migrated from xUnit v2 to xUnit v3 (see CHANGELOG.md for migration guidance)
+- CHANGED InitializeAsync methods now use ValueTask instead of Task
+- CHANGED Test projects require OutputType set to Exe
+- REMOVED Support for .NET 8 (LTS)
- CHANGED Dependencies have been upgraded to the latest compatible versions for all supported target frameworks (TFMs)🤖 Prompt for AI Agents
.nuget/Codebelt.Extensions.Xunit.App/PackageReleaseNotes.txt lines 1-6: the
release notes for Version 11.0.0 only list dependency upgrades and omit critical
breaking-change information; update the file to include a short summary of major
breaking changes (xUnit v3 migration, InitializeAsync changed from Task to
ValueTask, OutputType now Exe requirement, removal of .NET 8) or add a clear
pointer to the detailed CHANGELOG.md (with link and section heading) so users
reading package release notes see migration guidance.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|



This pull request is a major update focused on upgrading the codebase to support .NET 10 (LTS) and xUnit v3, while removing support for .NET 8. It introduces breaking changes related to xUnit v3, updates dependencies, and improves documentation to reflect the new supported platforms. The CI/CD workflow is also updated to use the latest actions and workflows.
Platform and Framework Upgrades
.NET 10and.NET 9, removing.NET 8support acrossDirectory.Build.props,.docfx/docfx.json, and related documentation and release notes. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]xUnit v3 Migration and Breaking Changes
xunitv2 toxunit.v3and updated related packages, includingXunit.v3.Priority, with associated breaking changes:TestandHostFixtureclasses now useValueTaskforInitializeAsyncinstead ofTask. Also, test projects now requireOutputTypeset toExe. [1] [2] [3] [4] [5]Dependency Updates
Cuemon.*packages andMicrosoft.NET.Test.Sdk. [1] [2] [3] [4] [5]CI/CD and Workflow Improvements
v3) versions of reusable workflows for build, pack, test, and SonarCloud, and commented out CodeQL for future upgrades. [1] [2] [3] [4] [5]Documentation and Release Notes
Let me know if you want to discuss any of the breaking changes or migration steps in more detail!
Summary by CodeRabbit
New Features
Breaking Changes
Chores