Run the tests on Windows CI - #3065
Open
julianoes wants to merge 5 commits into
Open
Conversation
The FTP and mission tests wrote to a hardcoded /tmp path, which is why they carried a TODO about Windows. std::filesystem::temp_directory_path() gives us the right place on every platform, so use that.
Windows was the only platform where we built the unit and system tests without ever running them. The x64 and x86 builds run natively on the runner, so they just get the two test steps. The arm64 library build is cross-compiled and can't run there, so it gets a separate job on a native arm64 runner which builds and tests only.
Windows resolves an empty hostname to the wildcard address, because we ask getaddrinfo with AI_PASSIVE, while Linux and macOS return an error. The unit test expects it to fail, so reject it before we ask at all.
julianoes
force-pushed
the
pr-windows-system-tests
branch
from
September 2, 2026 09:16
bf7fd1b to
da25395
Compare
Windows reports an ICMP port unreachable, caused by us sending to a remote which has gone away, as an error on the next receive. We treated any error as the end of the connection and stopped receiving, so a UDP link never came back once the other side had been away. Tell Windows to stop reporting those errors, and treat the ones about a single datagram as non-fatal so we keep listening either way.
One thread per subscription needs more address space for the stacks than a 32-bit process has, which is why the test died on Windows x86 without any output. Do the same number of subscriptions from a sensible number of threads, which keeps the contention the test is after and takes 120 ms instead of seconds.
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.
Windows is the only platform where we build the unit and system tests on every PR but never run them. This turns them on, for Intel and arm.
windows-2025runner, so the existing library build jobs just get aunit testsand asystem testsstep (withinstall\binonPATHformavsdk.dll).Windows arm64 testsjob on the nativewindows-11-armrunner which builds and tests only. The release artifacts keep coming from the existing cross build, untouched./tmp/...path — that's what theTODO: make this compatible for Windows using GetTempPath2comments were about. They now go throughstd::filesystem::temp_directory_path().Let's see what CI says. If some tests turn out flaky on Windows I'd rather find out here than after merging.