Files
ottyl/tickets/099-remove-test-handle-stub.md
T
2026-09-07 12:16:36 +01:00

2.2 KiB

099 — Remove test_handle's duplicate-of-spawn test stub

Summary

test_handle is a #[cfg(test)] production-file function that exists only to give tests access to the engine's internal mpsc::Receiver — it duplicates spawn() almost line-for-line rather than exposing that receiver through spawn()/EngineHandle itself. Per this repo's IDEAS.md guidance: prefer changing a function's scope/visibility (or the tests) over maintaining a parallel stub.

Where

  • src/engine/handle.rs:113-128 — #[cfg(test)] pub(crate) fn test_handle(channel_capacity: usize) -> (EngineHandle, mpsc::Receiver<EngineMessage>), duplicating spawn() (src/engine/handle.rs:103-111) except that spawn() discards the receiver after wiring the actor loop, while test_handle returns it raw.
  • Re-exported at src/engine/mod.rs:21: pub(crate) use handle::test_handle;.
  • Consumed only by tests in src/engine/ingest.rs:228 (use crate::engine::test_handle;) and called at lines 248, 264, 281, 302 inside #[cfg(test)] mod tests.

Scope

  • Remove test_handle and instead give tests access via spawn() itself — e.g. have spawn() take an optional channel-capacity override and always hand back the receiver alongside the handle (or the actor join handle), with production call sites (main.rs) simply ignoring what they don't need, rather than keeping a second constructor whose only difference is what it returns.
  • Update the four call sites in src/engine/ingest.rs's test module to use the adjusted spawn() signature.
  • Out of scope: the other test-fixture helpers in src/engine/tests.rs (metric_request, declare_test_param, ingest_log, logs_query, logs_query_sorted, etc.) are ordinary test-data builders, not visibility workarounds — leave those alone. Also leave the #[allow(dead_code)] items (src/engine/message.rs:11,29, src/api/mcp_server.rs:254, src/config/mod.rs:27, and similar in metric_primitive.rs/data_value.rs/timestamp.rs/index_key.rs) untouched — they weren't confirmed to be test-visibility stubs and need individual inspection before deciding whether they're even related to this ticket's pattern.