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
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:
"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.csprojcurrently has xunit 2.9.3, Verify.Xunit 31.12.5 and Verify.DiffPlex 3.1.2.Verify.Xunitis the xunit v2 integration and its final release is 31.12.5, which depends on Verify core 31.12.5 withinclude="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:The failure mode is the dangerous kind. Bumping to 3.3.1 restores a build with zero warnings and then dies at runtime with
MethodAccessExceptiononGuards.AgainstBadSourceFile- 2748 of 4261 tests. A compiling branch is not evidence here. The Renovate config carries aprBodyNoteswarning 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:
xunit2.9.3 ->xunit.v3, and checkxunit.runner.visualstudio/Microsoft.NET.Test.Sdkline up with itVerify.Xunit->Verify.XunitV3, then Verify core and Verify.DiffPlex to currentgit statusfor modified*.verified.txt)/p:UseLuaSettings=trueNot 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.DiffPlexheld at<3.2.0Both come off once this migration lands.
References
test/FactorioTools.Test/FactorioTools.Test.csproj:31-55.github/renovate.json5(added in Add Renovate config encoding the documented dependency holds #35, hardened in Add the Renovate hardening content that #38 was meant to carry #42)