fix(testkit): fork copies seed data and run_subtests reports failures by name
What does this MR do and why?
Part of #315 (closed), #314 (closed). Three fixes to the integration test infrastructure:
-
fork()copies seed data -- Previously,fork()created tables via DDL but left them empty. Now it copies all rows from the parent database viaINSERT INTO fork.table SELECT * FROM parent.table. Tests usingrun_subtests!now have access to the same seed data as the parent context. -
run_subtests!reports failures by name -- Switches frombuffer_unordered(which swallowed panic details) totokio::spawnwith per-task panic catching. Failed subtests are reported with their name and panic message, matchingrun_subtests_shared!behavior. -
collect_subtest_results()extracted -- Deduplicates the panic-catching and error-reporting logic betweenrun_subtests!andrun_subtests_shared!.
Also sanitizes fork database names (:: -> _) since stringify!($test_fn) produces paths like dedup::search_returns_latest_version which contain characters invalid in ClickHouse database names.