@josevalim maybe something like this could be put into ExUnit?
defmacro assert_process_receive(pid, message, fun) do
quote do
:erlang.trace(unquote(pid), true, [:receive])
unquote(fun).()
assert_receive({:trace, ^unquote(pid), :receive, message})
end
end






















