Skip to content

Commit beaca3b

Browse files
committed
Improve diff printing for when there are nested three-element tuples
1 parent 8994297 commit beaca3b

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

lib/ex_unit/lib/ex_unit/diff.ex

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -989,7 +989,8 @@ defmodule ExUnit.Diff do
989989
container_to_algebra("%{", list, "}", diff_wrapper, select_map_item_to_algebra(list))
990990
end
991991

992-
defp safe_to_algebra({_, _, _} = quoted, _diff_wrapper) do
992+
defp safe_to_algebra({_, meta, args} = quoted, _diff_wrapper)
993+
when is_list(meta) and (is_list(args) or is_atom(args)) do
993994
Macro.to_string(quoted)
994995
end
995996

@@ -1185,8 +1186,12 @@ defmodule ExUnit.Diff do
11851186
defp update_diff_meta(literal, true),
11861187
do: {:__block__, [diff: true], [literal]}
11871188

1188-
defp extract_diff_meta({:__block__, [diff: true], [literal]}), do: {literal, true}
1189-
defp extract_diff_meta({left, meta, right}), do: {{left, meta, right}, !!meta[:diff]}
1189+
defp extract_diff_meta({:__block__, [diff: true], [literal]}),
1190+
do: {literal, true}
1191+
1192+
defp extract_diff_meta({left, meta, right}) when is_list(meta),
1193+
do: {{left, meta, right}, !!meta[:diff]}
1194+
11901195
defp extract_diff_meta(other), do: {other, false}
11911196

11921197
defp keyword?(quoted) do

lib/ex_unit/test/ex_unit/diff_test.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,12 @@ defmodule ExUnit.DiffTest do
649649
"%-ExUnit.DiffTest.User-{age: 1-6-, -name: nil-}",
650650
"%+ExUnit.DiffTest.Person+{age: +2+1}"
651651
)
652+
653+
refute_diff(
654+
%User{name: {:a, :b, :c}} == :error,
655+
"-%ExUnit.DiffTest.User{name: {:a, :b, :c}, age: nil}-",
656+
"+:error+"
657+
)
652658
end
653659

654660
test "structs with inspect" do

0 commit comments

Comments
 (0)