Cockatrice/tests
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
..
card_zone_algorithms [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
carddatabase [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
deck_list_model [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
deck_list_zones [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
loading_from_clipboard [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
movecard_tests [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
oracle [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
picture_loader_benchmark [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
settings [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
theme_migration [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
clamped_arithmetic_test.cpp Unify counter clamp arithmetic into shared addClamped() helper (#7009) 2026-06-28 16:10:57 -07:00
CMakeLists.txt [Tests] Register each test case with CTest instead of each test binary 2026-10-05 08:20:09 +02:00
deck_hash_performance_test.cpp Hashing tests (#5026) 2025-12-23 17:48:10 +01:00
expression_test.cpp Turn Card, Deck_List, Protocol, RNG, Network (Client, Server), Settings and Utility into libraries and remove cockatrice_common. (#6212) 2025-10-09 07:36:12 +02:00
lag_monitor_test.cpp [Client] Detect main-thread event loop stalls (#7155) 2026-08-23 00:53:40 +02:00
latency_tracker_test.cpp [Network] Measure real server round-trip times (#7153) 2026-08-23 00:03:52 +02:00
loader_local_matching_test.cpp [PictureLoader] Fix custom-folder pictures in subdirectories not loading (#7340) 2026-09-21 21:48:34 +02:00
metrics_registry_test.cpp [Client/Server/Protocol] Surface live metrics in the Developer tab (#7212) 2026-09-11 17:18:56 +02:00
password_hash_test.cpp [Security] Use a CSPRNG for salts, tokens, and RNG seeding (#7192) 2026-09-04 13:49:18 +02:00
playmat_resolver_test.cpp [Game] Playmats (#7101) 2026-08-21 10:40:49 +02:00
report_categories_test.cpp [Server/Client] Unify report categories (#7345) 2026-09-24 18:37:54 +02:00
server_card_counter_test.cpp Split trice_limits.h into dedicated headers (#7025) 2026-06-29 14:37:52 -07:00
server_counter_test.cpp Centralize counter API with server-side bounds and no-op filtering (#6879) 2026-05-21 20:39:35 -07:00
server_developer_role_test.cpp [Server/Client/Protocol] Add developer staff role (#7211) 2026-09-11 17:18:56 +02:00
server_game_join_test.cpp [Game] Allow judges to enter any game regardless of restrictions (#7315) 2026-09-19 10:39:52 +02:00
server_rate_limiter_test.cpp [PictureLoader] Schedule exponential backoff on 429 - Too many request handler and call failed on fail (#7053) 2026-08-08 22:55:27 +02:00
single_instance_manager_test.cpp [Client] Hand off single-instance payloads outside the readyRead signal (#7373) 2026-10-02 21:19:02 +02:00
test_age_formatting.cpp do not save a const reference to the user data in the info dialog (#6974) 2026-06-09 23:35:00 -07:00
translation_loader_test.cpp [Translations] Load Qt's own translations and build ours with the binary (#7384) 2026-10-03 15:04:30 +02:00
translation_loader_test.ts [Translations] Load Qt's own translations and build ours with the binary (#7384) 2026-10-03 15:04:30 +02:00
warning_categories_test.cpp [Server/Client/Protocol] Reporting users + moderation queue functionality (#7091) 2026-08-21 15:00:13 +02:00