Merge pull request #150 from iamvery/format-match-failures

Format match failures
This commit is contained in:
Felipe Seré
2016-12-23 16:51:49 +01:00
committed by GitHub
3 changed files with 32 additions and 4 deletions

View File

@@ -27,8 +27,7 @@ end
defmodule Display.Uncoloured do
def red(str), do: str
def cyan(str), do: str
def green(str), do: str
def yellow(str), do: str
end

View File

@@ -26,6 +26,12 @@ defmodule Display.Failure do
defp format_inequality(message, %{left: @no_value, right: @no_value}) do
message
end
defp format_inequality(message, %{left: @no_value, right: match_value}) do
"""
#{message}
value does not match: #{match_value |> inspect |> Paint.yellow}
"""
end
defp format_inequality(message, %{left: left, right: right}) do
"""
#{message}

View File

@@ -5,13 +5,36 @@ defmodule FailureTests do
test "assertion failure with proper expression" do
error = error(%ExUnit.AssertionError{expr: "hi"})
assert Failure.format_failure(error) == "Assertion failed in some_file.ex:42\n\"hi\"\n"
assert Failure.format_failure(error) == "Assertion failed in some_file.ex:42\n\"hi\"\n"
end
test "assertion failure with message" do
error = error(%ExUnit.AssertionError{expr: :ex_unit_no_meaningful_value, message: "hola"})
assert Failure.format_failure(error) == "Assertion failed in some_file.ex:42\nhola\n"
assert Failure.format_failure(error) == "Assertion failed in some_file.ex:42\nhola\n"
end
test "equality failure" do
error = error(%ExUnit.AssertionError{expr: quote(do: :lol == :wat), left: :lol, right: :wat})
assert Failure.format_failure(error) == """
Assertion failed in some_file.ex:42
:lol == :wat
left: :lol
right: :wat
"""
end
test "match failure" do
error = error(%ExUnit.AssertionError{expr: quote(do: match?(:lol,:wat)), right: :wat})
assert Failure.format_failure(error) == """
Assertion failed in some_file.ex:42
match?(:lol, :wat)
value does not match: :wat
"""
end
defp error(error) do