Fixes the reported line for failures using assert_receive
It needed to be turned into a macro and some tinkering with external vars was needed.
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
defmodule BlankAssertions do
|
||||
require ExUnit.Assertions
|
||||
|
||||
defmacro assert(expr) do
|
||||
if contains_blank?(expr) do
|
||||
code = Macro.escape(expr)
|
||||
@@ -27,14 +25,15 @@ defmodule BlankAssertions do
|
||||
end
|
||||
end
|
||||
|
||||
def assert_receive(expr) do
|
||||
if expr == :__ do
|
||||
raise ExUnit.AssertionError, expr: expr
|
||||
defmacro assert_receive(expr) do
|
||||
code = Macro.escape(expr)
|
||||
if contains_blank?(expr) do
|
||||
quote do
|
||||
raise ExUnit.AssertionError, expr: {:assert_receive, [], [unquote(code)]}
|
||||
end
|
||||
else
|
||||
receive do
|
||||
^expr -> true
|
||||
after
|
||||
100 -> flunk("No message matching #{expr} found in mailbox")
|
||||
quote do
|
||||
ExUnit.Assertions.assert_receive(var!(expr), 100)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@@ -41,13 +41,14 @@ defmodule Koans do
|
||||
end
|
||||
|
||||
defp create_vars(amount) do
|
||||
Enum.map(0..amount, fn (idx) -> quote do: elem(converted, unquote(idx)) end)
|
||||
for id <- 0..amount, do: quote do: elem(converted, unquote(id))
|
||||
end
|
||||
|
||||
defmacro __using__(_opts) do
|
||||
quote do
|
||||
@compile :nowarn_unused_vars
|
||||
Module.register_attribute(__MODULE__, :koans, accumulate: true)
|
||||
|
||||
require ExUnit.Assertions
|
||||
import Koans
|
||||
import BlankAssertions
|
||||
|
Reference in New Issue
Block a user