
- Run mix credo --all to identify possible code optimizations - Resolve most of the errors generated by credo such as: - Numbers larger than 9999 should be written with underscores: 58_127 - Modules should have a @moduledoc tag - Comparison will always return true
57 lines
1.5 KiB
Elixir
57 lines
1.5 KiB
Elixir
defmodule FailureTests do
|
|
use ExUnit.Case
|
|
alias Display.Failure
|
|
|
|
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"
|
|
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"
|
|
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
|
|
|
|
test "only offending lines are displayed for errors" do
|
|
[koan] = SingleArity.all_koans()
|
|
error = apply(SingleArity, koan, []) |> Tuple.to_list() |> List.last() |> error
|
|
|
|
assert Failure.format_failure(error) == """
|
|
Assertion failed in some_file.ex:42\nmatch?(:foo, ___)
|
|
"""
|
|
end
|
|
|
|
defp error(error) do
|
|
%{
|
|
error: error,
|
|
file: "some_file.ex",
|
|
line: 42
|
|
}
|
|
end
|
|
end
|