Consider macros and module attributes on the left side of ++ on ExUnit.Diff
Closes #10520
This commit is contained in:
@@ -70,8 +70,14 @@ defmodule ExUnit.Diff do
|
||||
diff_quoted(number, right, env)
|
||||
end
|
||||
|
||||
defp diff_quoted({:++, _, _} = left, right, env) when is_list(right) do
|
||||
diff_maybe_improper_list(left, right, env)
|
||||
defp diff_quoted({:++, meta, [prefix, suffix]}, right, env) when is_list(right) do
|
||||
case prefix do
|
||||
{_, [expanded: expanded] ++ _, _} ->
|
||||
diff_maybe_improper_list({:++, meta, [expanded, suffix]}, right, env)
|
||||
|
||||
_ ->
|
||||
diff_maybe_improper_list({:++, meta, [prefix, suffix]}, right, env)
|
||||
end
|
||||
end
|
||||
|
||||
defp diff_quoted({:{}, _, left}, right, env) when is_tuple(right) do
|
||||
|
||||
@@ -345,7 +345,6 @@ defmodule ExUnit.DiffTest do
|
||||
|
||||
refute_diff([:a, :b] ++ [:c] = [:a, :b], "[:a, :b] ++ [-:c-]", "[:a, :b]")
|
||||
refute_diff([:a, :c] ++ [:b] = [:a, :b], "[:a, -:c-] ++ [:b]", "[:a, :b]")
|
||||
|
||||
refute_diff([:a] ++ [:b] ++ [:c] = [:a, :b], "[:a] ++ [:b] ++ [-:c-]", "[:a, :b]")
|
||||
|
||||
assert_diff([:a] ++ :b = [:a | :b], [])
|
||||
@@ -353,10 +352,16 @@ defmodule ExUnit.DiffTest do
|
||||
|
||||
refute_diff([:a, :b] ++ :c = [:a, :b, :c], "[:a, :b] ++ -:c-", "[:a, :b, +:c+]")
|
||||
refute_diff([:a] ++ [:b] ++ :c = [:a, :b, :c], "[:a] ++ [:b] ++ -:c-", "[:a, :b, +:c+]")
|
||||
|
||||
refute_diff([:a] ++ [:b] = :a, "-[:a] ++ [:b]-", "+:a+")
|
||||
end
|
||||
|
||||
@a [:a]
|
||||
test "concat lists with module attributes" do
|
||||
assert_diff(@a ++ [:b] = [:a, :b], [])
|
||||
refute_diff(@a ++ [:b] = [:a], "[:a] ++ [-:b-]", "[:a]")
|
||||
refute_diff(@a ++ [:b] = [:b], "[-:a-] ++ [:b]", "[:b]")
|
||||
end
|
||||
|
||||
test "mixed lists" do
|
||||
refute_diff([:a | :b] = [:a, :b], "[:a | -:b-]", "[:a, +:b+]")
|
||||
refute_diff([:a, :b] = [:a | :b], "[:a, -:b-]", "[:a | +:b+]")
|
||||
|
||||
Reference in New Issue
Block a user