symbiont_ex/test/support/test_helpers.ex

33 lines
793 B
Elixir

defmodule Symbiont.TestHelpers do
@moduledoc "Shared helpers for Symbiont ExUnit tests."
@doc "Stop a named process safely — no crash if already dead."
def safe_stop(name) do
case Process.whereis(name) do
nil -> :ok
pid ->
try do
GenServer.stop(pid)
catch
:exit, _ -> :ok
end
end
end
@doc "Stop all standard Symbiont services safely."
def stop_all_services do
for name <- [Symbiont.Heartbeat, Symbiont.Queue, Symbiont.Ledger] do
safe_stop(name)
end
:ok
end
@doc "Ensure TaskSupervisor is running (needed by Heartbeat)."
def ensure_task_supervisor do
unless Process.whereis(Symbiont.TaskSupervisor) do
Task.Supervisor.start_link(name: Symbiont.TaskSupervisor)
end
end
end