Implement a custom version of assert_receive.

This commit is contained in:
Felipe Sere
2016-04-18 23:08:21 +01:00
parent 45619f6bdb
commit 211355b1a5
2 changed files with 18 additions and 2 deletions

View File

@@ -33,7 +33,14 @@ defmodule BlankAssertions do
end
else
quote do
ExUnit.Assertions.assert_receive(var!(expr), 100)
receive do
unquote(expr) -> :ok
after
100 -> {:messages, messages} = Process.info(self(), :messages)
mailbox = Enum.map_join(messages, ", ", &inspect/1)
message = inspect(unquote(expr))
ExUnit.Assertions.flunk("message #{message} not found in [#{mailbox}]")
end
end
end
end

View File

@@ -1,6 +1,7 @@
defmodule Display do
alias IO.ANSI
@current_dir File.cwd!
@no_value :ex_unit_no_meaningful_value
def invalid_koan(koan, modules) do
koans_names = module_names(modules)
@@ -43,10 +44,18 @@ defmodule Display do
end
end
defp format_failure(%{error: %ExUnit.AssertionError{expr: @no_value, message: message}, file: file, line: line}) do
format_assertion_error(message, file, line)
end
defp format_failure(%{error: %ExUnit.AssertionError{expr: expr}, file: file, line: line}) do
format_assertion_error(expr, file, line)
end
defp format_assertion_error(error, file, line) do
"""
#{format_cyan("Assertion failed in #{file}:#{line}")}
#{format_red(Macro.to_string(expr))}
#{format_red(Macro.to_string(error))}
"""
end