Cockatrice/.ci
Lukas Brübach b7a6f54103 [Tests] Register each test case with CTest instead of each test binary
Registering a test cost four edits across a dozen CMakeLists files: add_test,
add_executable, a conditional add_dependencies on gtest, and target_link_libraries.
The conditional branch was the trap -- it is only needed when GTest was fetched and
add_subdirectory'd, and omitting it yields undefined gtest symbols at link time --
so it was easy to leave out and impossible to notice until the link failed.

Fold all four steps into cockatrice_add_test() and migrate every test directory
onto it, with a cockatrice_add_manual_test() wrapper for the three benchmarks that
are built but deliberately kept out of ctest. The calls now read as a declaration
of what a test is rather than a transcript of how to register one.

While rewriting the registrations, replace add_test(NAME x COMMAND x) with
gtest_discover_tests(). Naming the binary as a single CTest entry meant a CI failure
reported only which binary failed, and ctest -R Suite.Case could not select an
individual case. Discovery raises the suite from 35 opaque entries to 469 real ones:
ctest -R ThemeMigrationTest.IsIdempotent now runs exactly that case, and
ctest -L server / -LE bench work off labels applied at registration.

Give every test a 60s TIMEOUT. CTest's implicit default is 1500s, so one hung
socket wait would stall CI for 25 minutes, and single_instance_manager_test already
does real QLocalSocket waits.

Dropping per-case granularity costs wall-clock time, since the suite becomes
process-spawn bound rather than CPU bound: serial ctest went from 3.8s to 30.8s. Run
it with -j in CI to recover it -- 7.6s at -j4, and 3.5s at -j8, both at or below
the old serial time. The binaries are parallel-safe: the only test claiming a fixed
resource scopes its local socket name to its own pid, so concurrent copies cannot
collide.

Also delete dummy_test, which asserted 1 == 1 and only proved the harness was
wired up -- something the other 468 cases already establish.

No test is added, removed, or changed by this commit; the 469 cases are the same
ones the 35 binaries contained.
2026-10-05 08:20:09 +02:00
..
Arch [Security] Use a CSPRNG for salts, tokens, and RNG seeding (#7192) 2026-09-04 13:49:18 +02:00
Debian12 Alphabetical ordering of Qt modules/packages (#7334) 2026-09-20 19:24:55 +02:00
Debian13 Alphabetical ordering of Qt modules/packages (#7334) 2026-09-20 19:24:55 +02:00
Fedora43 Alphabetical ordering of Qt modules/packages (#7334) 2026-09-20 19:24:55 +02:00
Fedora44 Alphabetical ordering of Qt modules/packages (#7334) 2026-09-20 19:24:55 +02:00
Servatrice_Debian12 [Security] Use a CSPRNG for salts, tokens, and RNG seeding (#7192) 2026-09-04 13:49:18 +02:00
Ubuntu24.04 Alphabetical ordering of Qt modules/packages (#7334) 2026-09-20 19:24:55 +02:00
Ubuntu26.04 Alphabetical ordering of Qt modules/packages (#7334) 2026-09-20 19:24:55 +02:00
compile.sh [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
docker.sh add ccache eviction for files older than 7 days (#6795) 2026-04-11 19:18:12 +02:00
lint_cpp.sh CI: Print colored diff for lint check (#6975) 2026-06-08 19:19:28 +02:00
macos.entitlements Sign macOS Releases (#5396) 2025-01-09 22:32:53 -05:00
name_build.sh CI: Cleanup (#6677) 2026-03-09 21:32:47 +01:00
prep_release.sh escape ampersand (#6900) 2026-05-21 22:02:09 +02:00
release_template.md Update & add arch/platform labels in release template (#7149) 2026-08-23 12:56:00 +02:00
resolve_latest_aqt_qt_version.sh CI: Resolve to latest Qt version in range for Windows as well (#6700) 2026-03-15 17:47:48 +01:00
thin_macos_qtlib.sh ci: make fat qt libs thin (#6281) 2026-01-04 01:00:05 +01:00
update_translation_source_strings.sh make translation update script more specific in line selection (#4993) 2024-01-25 23:28:23 +01:00
update_translation_source_strings_template.md fix transifex link (#5969) 2025-06-09 02:05:24 +02:00