Repository navigation
Move the tests to xunit.v3 4 and answer reviews with Conventional Comments - #472
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Reefact
left a comment
There was a problem hiding this comment.
CI Windows failure identified.
|
reviewed: Windows coverage invocation fixed and all CI checks pass Verified on |
xunit.v3 4 runs on Microsoft.Testing.Platform v2, which the .NET 10 SDK no longer drives through the VSTest mode of `dotnet test`. global.json opts `dotnet test` into the Testing Platform mode, so every command now names its target with --solution or --project and logs with --output. coverlet.collector is a VSTest data collector and stops working there. Every test project now references coverlet.MTP, and coverage.rsp replaces coverage.runsettings as the shared ci/sonar options: same OpenCover format, same measured modules, one report per test project named coverage.opencover.<timestamp>.xml. Verify.XunitV3 stays on 32.0.1, which runs on xunit.v3 4: every 33.x release fails the build with SponsorCheck SC021 until a sponsorship or exemption is declared, a licensing decision left to the maintainer. Dependabot ignores 33 and later until then. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019k6GsSYBeJ4fUz7QbEueQW
Vendor the respond-to-review skill verbatim from Reefact/conventional-comments-toolkit (commit 996a6fd) under .claude/skills/, and point AGENTS.md and CLAUDE.md at it. Review replies now carry a reply label (done, ack, disagree, thanks, note, question) instead of the free-form "Resolved in <sha>", agents never post decision or reviewed, and a blocking thread is left to its reviewer. The escalation routes to @Reefact are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019k6GsSYBeJ4fUz7QbEueQW
507f9e6 to
6d3fb04
Compare
|
reviewed: xUnit migration and review-reply rules verified Rechecked commit |
Summary
This PR carries two changes:
dotnet test(build error: "Testing with VSTest target is no longer supported by Microsoft.Testing.Platform on .NET 10 SDK and later"). The PR therefore also switchesdotnet testto MTP mode and moves coverage fromcoverlet.collector(VSTest only) tocoverlet.MTP. No test source changes.respond-to-reviewskill vendored fromReefact/conventional-comments-toolkit.Type of change
Changes
xunit.v3 4 and the Testing Platform (
1968f5c)Directory.Packages.props:xunit.v3andxunit.v3.extensibility.core3.2.2 → 4.0.2,xunit.runner.visualstudio3.1.5 → 4.0.1,Verify.XunitV331.28.0 → 32.0.1,coverlet.collector→coverlet.MTP10.1.0.global.json:"test": { "runner": "Microsoft.Testing.Platform" }.coverlet.MTP. The oldIncludeAssetslist is dropped because it excludedcompile, and MTP's generatedSelfRegisteredExtensions.csneeds the coverlet types.coverage.rspreplacescoverage.runsettingsas the coverage options shared by ci and sonar:'@coverage.rsp'. The quotes are required: without them, PowerShell (the default shell on windows-latest) treats@as its splatting operator.Obsoleteto coverlet's default attribute exclusions.testconfig.json. A coverlet configuration file is authoritative and turns off coverlet's default exclusions, including the one that leaves out test assemblies..gitignoregains!/coverage.rsp, since the Visual Studio template ignores*.rsp.ci,sonar,release,canary):dotnet testnow uses--solution/--project, because MTP mode rejects a positional path.--output Detailedreplaces--logger "console;verbosity=normal".artifacts/coverage/**/coverage.opencover.*.xml: coverlet.MTP names the reportscoverage.opencover.<timestamp>.xml, one per test project, with no GUID folder.dependabot.yml: ignoreVerify.XunitV3>= 33.0.0 (see below).CLAUDE.md,AGENTS.md,CONTRIBUTING.md, its French translation and the PR template; coverage description in theci/sonarworkflow pages (EN + FR).Why Verify.XunitV3 stays on 32
Every
Verify.XunitV3release built against xunit.v3 4 (33.0.0 through 33.3.4) failsFirstClassErrors.GenDoc.UnitTestswith SponsorCheckSC021. The build must declare one of: a GitHub sponsorship, a licence, or a time-bounded exemption (OpenSource, at most 12 months, renewable). That is a licensing decision for the maintainer, not routine maintenance.32.0.1 depends on
xunit.v3.extensibility.core>= 3.2.2 and works on xunit.v3 4: the 172 GenDoc tests pass. Verify does not officially support this combination, though, so the question is only postponed.Conventional Comments review replies (
6d3fb04).claude/skills/respond-to-review/SKILL.md: vendored verbatim fromReefact/conventional-comments-toolkitat commit996a6fd.AGENTS.md("Responding to review feedback") andCLAUDE.md:done/ack/disagree/thanks/note/question, replacing the free-formResolved in <sha>;decisionorreviewed;Testing
dotnet build FirstClassErrors.sln— 0 warnings, 0 errors (Debug and Release).dotnet test --solution FirstClassErrors.sln— 1054 / 1054 passed, the same count as onmainwith xunit 3.2.2.FirstClassErrors.Analyzers.UnitTests) — included in the run above.dotnet test --solution FirstClassErrors.sln -c Release --no-build '@coverage.rsp' --results-directory artifacts/coveragewrites 9 OpenCover reports under both bash and PowerShell 7.6. Each report measures the same modules ascoverlet.collector+coverage.runsettingsonmain.05ef681: Build & test on ubuntu-latest and windows-latest, the .NET Framework 4.7.2 floor, SonarQube Cloud analysis, and every other check. History was then tidied (the PowerShell quoting fix folded into1968f5c). The source tree of1968f5cis identical to05ef681; CI on the current head is pending at the time of writing.build/stryker/cli.json(test-runner: mtp) on xunit.v3 4 / MTP v2: 72 tests discovered, 507 mutants tested, 507 killed, score 100 %. The other five configurations ran only as the CI's per-PR diff mutation jobs (green).releaseandcanaryworkflows (they do not run on pull requests).Documentation
doc/updated — contributor test commands, the ci/sonar workflow pages, and the review-reply rules inAGENTS.md/CLAUDE.md.CONTRIBUTING.fr.md,ci.fr.md,sonar.fr.md. No user-facing library behaviour changes.Architecture decisions
Proposed: ADR-____ADR check.
OpenSourceexemption, or replace Verify) is a dependency/licensing policy and may deserve its own ADR.@Reefact to judge both points.
Related issues
None.
🤖 Generated with Claude Code
https://claude.ai/code/session_019k6GsSYBeJ4fUz7QbEueQW