Skip to content

deps: Bump xunit.v3 from 3.2.2 to 4.0.0 - #434

Closed
dependabot[bot] wants to merge 1 commit into
devfrom
dependabot/nuget/tests/PlanViewer.Core.Tests/dev/xunit.v3-4.0.0
Closed

dependabot[bot] wants to merge 1 commit into
devfrom
dependabot/nuget/tests/PlanViewer.Core.Tests/dev/xunit.v3-4.0.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 17, 2026 •

Copy link
Copy Markdown
Contributor

Updated xunit.v3 from 3.2.2 to 4.0.0.

Release notes

Sourced from xunit.v3's releases.

No release notes found for this version range.

Commits viewable in compare view.

@dependabot @github

dependabot Bot commented on behalf of github Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: dependencies. Please create it before Dependabot can add it to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

Copy link
Copy Markdown
Owner

Review

What it does
Bumps xunit.v3 from 3.2.2 to 4.0.0 in tests/PlanViewer.Core.Tests/PlanViewer.Core.Tests.csproj:23. Test-only dependency; no src/ changes.

Good

  • Targets dev, not main.
  • Mechanical, single-line change.
  • No Avalonia/PlanAnalyzer/color/UI surface touched — none of the usual gotchas apply.

Needs attention

  • Coordinate with deps: Bump xunit.runner.visualstudio from 3.1.5 to 4.0.0 #433. That PR bumps xunit.runner.visualstudio 3.1.5 → 4.0.0. This PR leaves the runner at 3.1.5 while jumping the framework to 4.0.0 (see tests/PlanViewer.Core.Tests/PlanViewer.Core.Tests.csproj:23-24). Framework/runner across a major boundary is a known way to get "no tests discovered" or test-host loader failures. Land both together (or neither), not one at a time.
  • Major version, no release notes. Dependabot reports "No release notes found for this version range" for the 3.2.2 → 4.0.0 jump. Verify build-and-test is green on the merged pair before merging — a green run on this PR alone (with the old runner) isn't enough signal.
  • No test changes are needed from us since the project only uses Xunit via the <Using Include="Xunit" /> global; any API breaks would surface at build time.

Comments only — not approving or requesting changes.


Generated by Claude Code

@erikdarlingdata

Copy link
Copy Markdown
Owner

Superseded by #442, which takes this bump along with the migration it forces.

This isn't Dependabot's fault. xunit.v3 4.0.0 drops VSTest on the .NET 10 SDK, so the bump cannot build on its own:

Microsoft.Testing.Platform.MSBuild.targets(320,5): error : Testing with VSTest target is no
longer supported by Microsoft.Testing.Platform on .NET 10 SDK and later.

#442 switches the runner to Microsoft.Testing.Platform, ports both layers of the hang watchdog from #427, and drops xunit.runner.visualstudio — which also moots #433. 305 tests pass on CI under the new runner.

Leaving this open until #442 lands.

---
updated-dependencies:
- dependency-name: xunit.v3
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/nuget/tests/PlanViewer.Core.Tests/dev/xunit.v3-4.0.0 branch from ff46f5a to bf1eaa7 Compare August 21, 2026 09:14
erikdarlingdata added a commit that referenced this pull request Aug 21, 2026
…434)

Dependabot #434 fails to build, and not because of anything it did wrong:

  Microsoft.Testing.Platform.MSBuild.targets(320,5): error : Testing with VSTest
  target is no longer supported by Microsoft.Testing.Platform on .NET 10 SDK and
  later.

xunit.v3 4.0.0 drops VSTest on the .NET 10 SDK. There is no version of this bump
that keeps the old runner, so it is migrate or stay on 3.2.2. #433 is the same
family and passes only because bumping the VSTest adapter alone changes nothing.

The opt-in is repo-level, not per-project, which the target names outright
(_SupportsGlobalJsonTestRunner): global.json now selects the runner. Setting
TestingPlatformDotnetTestSupport in the csproj alone does not do it, and I tried
that first.

xunit.runner.visualstudio is dropped because it IS the VSTest adapter and has no
role here any more. That moots #433.

The watchdog from 5f84116 needed porting, and this is the part worth reading.
Both of its layers were VSTest-only: RunSettingsFilePath/TestSessionTimeout for
bare local runs, and the blame-hang options in the three workflows. The local
layer is now TestingPlatformCommandLineArguments carrying a 15m session timeout,
same value and same no-flags-to-remember property; the workflows pass the hangdump
options, which produce the same name-the-wedged-test artifact.

I verified the local layer the way the original was verified, because a silently
ignored property looks exactly like a working one: set it to 1ms temporarily and a
bare `dotnet test` cancelled with 0 tests succeeded, then restored it.

What the port does NOT recover, stated plainly because it would be easy to leave
implied: neither MTP mechanism stops the GC-suspension livelock the original
watchdog was written for. Measured against a genuinely wedged host on macOS ARM64,
not assumed - it ran 2m55s at 107% CPU against a 90s hangdump timeout, and 8
minutes against a 60s session timeout, ignoring both. The reason is the same one
5f84116 gives for xUnit timeouts: the diagnostics the platform needs are served by
the execution engine that is suspended. MTP does put the timeout in a separate
controller process, which was the property that mattered, and it still cannot win.
An ordinary hang, where the runtime is responsive, is killed fine.

So this is not a regression against VSTest so much as both runners being equally
powerless there, and I want to be careful not to claim more: I did not prove the
OLD TestSessionTimeout could kill a livelocked host either. It was verified at 1ms
on a healthy run, never against a real wedge. Filed separately.

Tested: 279 passed, 0 failed, 2 skipped under the new runner (the whole suite
except the Mcp/Repl classes, which wedge on macOS for reasons that predate this and
are the subject of that separate issue). The CI flag form was run verbatim to
confirm the options parse. dotnet build clean; the 9 warnings are the pre-existing
MCP9005 obsolete-API uses in McpSmokeTests.cs.

Two XML-comment '--' errors on the way in, exactly as 5f84116 warned. Noted in the
comment so the next person does not rediscover it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
erikdarlingdata added a commit that referenced this pull request Aug 21, 2026
…434) (#442)

Dependabot #434 fails to build, and not because of anything it did wrong:

  Microsoft.Testing.Platform.MSBuild.targets(320,5): error : Testing with VSTest
  target is no longer supported by Microsoft.Testing.Platform on .NET 10 SDK and
  later.

xunit.v3 4.0.0 drops VSTest on the .NET 10 SDK. There is no version of this bump
that keeps the old runner, so it is migrate or stay on 3.2.2. #433 is the same
family and passes only because bumping the VSTest adapter alone changes nothing.

The opt-in is repo-level, not per-project, which the target names outright
(_SupportsGlobalJsonTestRunner): global.json now selects the runner. Setting
TestingPlatformDotnetTestSupport in the csproj alone does not do it, and I tried
that first.

xunit.runner.visualstudio is dropped because it IS the VSTest adapter and has no
role here any more. That moots #433.

The watchdog from 5f84116 needed porting, and this is the part worth reading.
Both of its layers were VSTest-only: RunSettingsFilePath/TestSessionTimeout for
bare local runs, and the blame-hang options in the three workflows. The local
layer is now TestingPlatformCommandLineArguments carrying a 15m session timeout,
same value and same no-flags-to-remember property; the workflows pass the hangdump
options, which produce the same name-the-wedged-test artifact.

I verified the local layer the way the original was verified, because a silently
ignored property looks exactly like a working one: set it to 1ms temporarily and a
bare `dotnet test` cancelled with 0 tests succeeded, then restored it.

What the port does NOT recover, stated plainly because it would be easy to leave
implied: neither MTP mechanism stops the GC-suspension livelock the original
watchdog was written for. Measured against a genuinely wedged host on macOS ARM64,
not assumed - it ran 2m55s at 107% CPU against a 90s hangdump timeout, and 8
minutes against a 60s session timeout, ignoring both. The reason is the same one
5f84116 gives for xUnit timeouts: the diagnostics the platform needs are served by
the execution engine that is suspended. MTP does put the timeout in a separate
controller process, which was the property that mattered, and it still cannot win.
An ordinary hang, where the runtime is responsive, is killed fine.

So this is not a regression against VSTest so much as both runners being equally
powerless there, and I want to be careful not to claim more: I did not prove the
OLD TestSessionTimeout could kill a livelocked host either. It was verified at 1ms
on a healthy run, never against a real wedge. Filed separately.

Tested: 279 passed, 0 failed, 2 skipped under the new runner (the whole suite
except the Mcp/Repl classes, which wedge on macOS for reasons that predate this and
are the subject of that separate issue). The CI flag form was run verbatim to
confirm the options parse. dotnet build clean; the 9 warnings are the pre-existing
MCP9005 obsolete-API uses in McpSmokeTests.cs.

Two XML-comment '--' errors on the way in, exactly as 5f84116 warned. Noted in the
comment so the next person does not rediscover it.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@erikdarlingdata

Copy link
Copy Markdown
Owner

Landed via #442, which took this bump along with the Microsoft.Testing.Platform migration it forces. xunit.v3 is on 4.0.0 in dev now.

@dependabot @github

dependabot Bot commented on behalf of github Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot
dependabot Bot deleted the dependabot/nuget/tests/PlanViewer.Core.Tests/dev/xunit.v3-4.0.0 branch August 21, 2026 10:16
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.

1 participant