diff --git a/lib/blank_assertions.ex b/lib/blank_assertions.ex index bcc8225..94206fb 100644 --- a/lib/blank_assertions.ex +++ b/lib/blank_assertions.ex @@ -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 diff --git a/lib/display.ex b/lib/display.ex index bd6549f..7840eb1 100644 --- a/lib/display.ex +++ b/lib/display.ex @@ -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