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:

  1. fork() copies seed data -- Previously, fork() created tables via DDL but left them empty. Now it copies all rows from the parent database via INSERT INTO fork.table SELECT * FROM parent.table. Tests using run_subtests! now have access to the same seed data as the parent context.

  2. run_subtests! reports failures by name -- Switches from buffer_unordered (which swallowed panic details) to tokio::spawn with per-task panic catching. Failed subtests are reported with their name and panic message, matching run_subtests_shared! behavior.

  3. collect_subtest_results() extracted -- Deduplicates the panic-catching and error-reporting logic between run_subtests! and run_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.

Edited by Michael Usachenko

Merge request reports

Loading