test: the updater digest check runs where only a later .NET SDK is installed #2294
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2294
Loading…
Reference in a new issue
No description provided.
Delete branch "test/updater-digest-net8"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
tests/test_updater_asset_digest.pyfails on a PC whose only .NET SDK is newer than 8 (here Arch's .NET SDK10.0.113): its fixture targets net8.0 with NuGet's sources cleared, and that SDK has no 8.0 reference pack to build
against.
Part of #2334.
.NET 8's support ended on 2026-11-10, so more machines, and in time CI images, will have only later SDKs.
What changed
tests/test_updater_asset_digest.pystill builds the realbuilder/HookshotBuilder/Updater.csfor net8.0, thebuilder's framework, wherever the SDK can restore it. It restores first; when that fails with NU1100 (the
reference pack is not installed, and nothing is fetched since the sources are cleared), it builds for the SDK's own
framework (
net<major of dotnet --version>.0) and says so in one line:Any other restore failure still fails the check with dotnet's output.
The message when
dotnetis missing says a .NET SDK is needed, since 8 is no longer the only one that runs it.Why not skip instead: a skip passes silently (
run_all.pyhas no way for a check to report a skip at run time), andthe cases do not depend on the framework (the HTTP, process and file boundaries are the fixture's fakes). The builder
itself still targets net8.0; CI's Windows job installs .NET 8.0.x (
actions/setup-dotnet), and the ubuntu-24.04 imagelists .NET SDKs 8.0, 9.0 and 10.0 side by side (runner-images readme, image 20261101), so CI should keep building for
net8.0; not checked on CI itself.
How it was tested
Linux (Arch, .NET SDK 10.0.113 only):
Updater digest cases: 20 passed, 0 failed.(6.6 s inrun_all.py).Updater.cswhose SHA-256 comparison was made to accept anything: 5 cases fail(
setup-corrupt-no-use,folder-setup-corrupt-no-use,zip-corrupt-no-extract,api-corrupt-terminal,chunked-corrupt), so the check still catches a broken updater when built for net10.0.python -I -B tests/run_all.pyon main49f75dc8with this change (2026-11-11, load about 100 to 135): 363 passed, 1failed, 10 skipped;
tests/test_updater_asset_digest.pypasses. The one failure,tests/test_wayland_libdecor_hint.py,fails on main as well on this machine (Clang 23; fixed by #2290).
Not tested
Assisted-by: Claude Opus 5.5
Co-Authored-By: Claude Opus 5.5 [email protected]
Rebased onto main
b29967bfso the workflows run here: they had waited for an approval on the old head, and main's game-free tests are green again since #2380. The patch is unchanged (git range-diff: the commit is equal), and its test passes on the new base.This looks right to me. The fallback is narrow: only a failed restore that mentions NU1100 switches the framework. Since the fixture has no package references and the NuGet sources are cleared, that can only mean the net8.0 reference pack is missing. Any other restore failure still fails the check with dotnet's output. The cases themselves don't depend on the framework, and your mutation run (5 corrupt-digest cases failing under net10.0) shows the check keeps its teeth there.
CI: the updater digest check passed on both the ubuntu-24.04 and windows-2022 jobs, built for net8.0. The two failing jobs are unrelated.
Python source checks (windows-2022, part 1/2)failed intest_native_astc_texture_count.py(thescanfdeprecation, fixed on main by #2397), andappimagefailed on a Launchpad connection timeout duringadd-apt-repository. A rebase or re-run should turn both green.One suggestion, not blocking:
tests/test_updater_asset_digest.py:45: on CI the fallback would hide exactly the regression the builder cares about. If a runner image ever drops the .NET 8 pack, orUpdater.csstarts using an API newer than .NET 8, the check would quietly build for net10.0 and pass, while the real builder no longer compiles. CI only prints one line in that case. Consider failing instead of falling back whenGITHUB_ACTIONS(orCI) is set, or whenrun_all.pyruns with--strict, so net8.0 stays enforced where it is supposed to be available, while local machines with only a newer SDK keep the fallback.@Joey-Magnus thanks for the review. Your suggestion is in #2543: on a GitHub runner a failed
net8.0restore now fails the check instead of falling back to a later framework. On a PC the fallback is unchanged.github-sync referenced this pull request2026-11-12 06:22:54 +00:00