Merge pull request #70 from ukutaht/fix_assert_receive

Implement a custom version of assert_receive.
This commit is contained in:
Uku Taht
2016-04-20 11:09:32 +01:00
2 changed files with 22 additions and 3 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 process mailbox. Mailbox contains: [#{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,21 @@ defmodule Display do
end
end
defp format_failure(%{error: %ExUnit.AssertionError{expr: expr}, file: file, line: line}) do
defp format_failure(%{error: %ExUnit.AssertionError{expr: @no_value, message: message}, file: file, line: line}) do
"""
#{format_cyan("Assertion failed in #{file}:#{line}")}
#{format_red(Macro.to_string(expr))}
#{format_red(message)}
"""
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(error))}
"""
end