Commit Graph
6 Commits
Author SHA1 Message Date
Dean 412d520e1c Merge pull request #6961 from savvaniss/fix/select-tests-junction
test(tools): build the select_tests fixture under a junction where Windows refuses symlinks
2026-10-18 02:16:19 +13:00
emirplus 1783de553b fix(tools): handle trailing separators in select_tests root paths 2026-10-17 14:17:42 +03:00
Savvanis SpyrosandClaude Opus 5.5 c56dbc6166 test(tools): build the select_tests fixture under a junction where Windows refuses symlinks
The fixture builds its project under a directory symlink so that the
paths CMake records differ from the resolved ones. Creating a symlink on
Windows needs SeCreateSymbolicLinkPrivilege, which a user without
Developer Mode or elevation lacks, so setUpClass failed with WinError
1314 and select_tests failed on every local Windows run. On that error
the link is now a directory junction, a reparse point realpath resolves
the same way. Where symlinks can be created nothing changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 00:19:35 +03:00
Adrià FranchandClaude c64d2cae0f fix(tools): keep path case in select_tests on Windows
normcase lowered every path it returned, so on Windows the test graph dump
asked ninja for tests/memorypooltest.exe, which it doesn't know as
MemoryPoolTest.exe, and failed; repo paths came out lowered too and could
never match the changed files git lists. Ignore case only to compare.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-16 22:04:06 +02:00
Adrià FranchandClaude 2b056a4795 ci: keep the build paths CMake recorded in select_tests.py
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-16 21:02:18 +02:00
Adrià FranchandClaude 13f6191b75 ci: build and run only the tests a change reaches on request
A new select input of the Build workflow limits the Linux and Windows jobs
to the test executables and tests whose build inputs the merged pull
requests change. Push builds of main always build and run everything and
save the test graph of their tree; dispatched runs with select restore the
latest graph and fall back to a full run without one.

tools/select_tests.py dump walks the ninja graph of every test executable
(order-only dependencies included, so prx libraries loaded at run time are
in it) plus the header dependencies of its objects, the CMake files that
register each test, the source files its command line names, and its
fixtures. select picks the tests whose closure, registration or arguments
contain a changed file, and every test that is not a native executable of
the tree; files no build reads select the tests under their directory;
changes to the root build, cmake/, 3rdparty/, the workflow or the tool run
everything. Tests added since the graph was written always run. ctest gets
the selection as -I indices through the tool, which keeps the cmd shell on
Windows and stays under its command line limit.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-16 19:10:16 +02:00