Repository navigation
Conversation
On the Windows ARM64 runners, mp_match_authentication_contract.py, mp_match_pause_contract.py and mp_match_teams_contract.py complete their checks and then fail in TemporaryDirectory cleanup: deleting the harness executable they just ran raises PermissionError (WinError 5). The imported game regression suite therefore reports 71/74, failing the Windows ARM64 native test step on main and every PR. Their temporary directories now pass ignore_cleanup_errors=True, so a leftover file in .tmp no longer turns a pass into a failure. Failures in the checks themselves still fail the test. Linux runs are unchanged and still remove everything. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
themuffinator
approved these changes
Oct 24, 2026
themuffinator
left a comment
Owner
There was a problem hiding this comment.
Reviewed. This changes only cleanup: ignore_cleanup_errors=True drops the WinError 5 raised while the temporary directory is deleted, and a check that fails still raises inside the with block. CI installs Python 3.x, which is newer than the 3.10 this parameter needs. I'll merge this once #202 has made the script smoke job green and this branch has been brought up to date.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the remaining Windows ARM64 failure in the native test step (
openq4-imported-game-regressions, 71/74).Cause
With the diagnostics #200 added, the Windows ARM64 logs (commit and push runs) show that all three failing contracts (
mp_match_authentication_contract.py,mp_match_pause_contract.py,mp_match_teams_contract.py) finish their checks, then fail whileTemporaryDirectorycleans up:So the harness executable each contract has just run is still locked when Python deletes it. The failure isn't in the checks themselves, and the same contracts pass on Linux and Windows x64. These are the contracts that build and run their own native harness on Windows.
locate_msvc()selects the x64 toolset (-arch=x64), so on an ARM64 runner the harness may be running under emulation, which could keep the file open briefly after exit. That's a plausible cause, but I haven't confirmed it.Fix
Their temporary directories pass
ignore_cleanup_errors=True, so a leftover executable in.tmpno longer fails a passing check. A failing check still fails the test. On Linux all three still pass and leave nothing behind. The check logic is unchanged.Building the harnesses natively for ARM64 would also avoid any emulation, but I couldn't test an ARM64 toolchain change here, so I've left it out.
Not verified
I don't have a Windows ARM64 machine, so this PR's own CI is the first real test of it.
🤖 Generated with Claude Code