Skip to content

Migrate test project to xunit v3 + Verify.XunitV3 to unfreeze the Verify stack #44

Description

@wormeyman

The Verify snapshot stack is stuck, and the fix is a migration rather than a version bump. This issue exists so the unlock path is tracked somewhere actionable instead of only in a code comment.

Why now

Renovate's first run (dashboard #41) independently flagged both packages under Deprecations / Replacements:

Datasource Package Replacement PR?
nuget Verify.Xunit Unavailable
nuget xunit Unavailable

"Replacement unavailable" is the important part - there is no automatic path, which is exactly why this needs a person.

What is stuck

test/FactorioTools.Test/FactorioTools.Test.csproj currently has xunit 2.9.3, Verify.Xunit 31.12.5 and Verify.DiffPlex 3.1.2.

Verify.Xunit is the xunit v2 integration and its final release is 31.12.5, which depends on Verify core 31.12.5 with include="All". Verify core has since moved to 31.27.0. Every Verify.DiffPlex above 3.1.2 requires a core newer than Verify.Xunit can consume:

Verify.DiffPlex Requires Verify core Against Verify.Xunit 31.12.5
3.1.2 >= 27.0.0 resolves to 31.12.5 - OK
3.2.0 >= 31.18.0 too new
3.3.0 >= 31.20.0 too new
3.3.1 >= 31.24.1 too new

The failure mode is the dangerous kind. Bumping to 3.3.1 restores a build with zero warnings and then dies at runtime with MethodAccessException on Guards.AgainstBadSourceFile - 2748 of 4261 tests. A compiling branch is not evidence here. The Renovate config carries a prBodyNotes warning saying exactly that, so any bot PR proposing it arrives with the caveat attached.

The unlock

Migrate the test project to xunit v3 + Verify.XunitV3, which frees the whole Verify family to move together.

Scope, roughly:

  • xunit 2.9.3 -> xunit.v3, and check xunit.runner.visualstudio / Microsoft.NET.Test.Sdk line up with it
  • Verify.Xunit -> Verify.XunitV3, then Verify core and Verify.DiffPlex to current
  • Confirm the ~4261 tests still pass, including the Verify snapshot assertions - and that snapshots are not silently rewritten in the process (Verify auto-accepts locally, so a green local run is not proof; check git status for modified *.verified.txt)
  • Both build configurations, default and /p:UseLuaSettings=true

Not urgent

Nothing is broken today. 3.1.2 resolves correctly and the suite is green. The cost of staying put is that Verify and DiffPlex are frozen, and the config has to keep a hold in place to say so:

  • Verify.DiffPlex held at <3.2.0
  • the whole family grouped as "Verify test snapshot stack" so the halves cannot drift apart in separate PRs

Both come off once this migration lands.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions