Skip to content

Commit aa039ce

Browse files
committed
Fix edit script for maps when there are no joint elements
Closes #4977.
1 parent 2fdf96e commit aa039ce

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

lib/ex_unit/lib/ex_unit/diff.ex

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,18 +367,29 @@ defmodule ExUnit.Diff do
367367
map_pair = format_key_value(key, val, keyword?)
368368
[[ins: ", ", ins: map_pair] | acc]
369369
end)
370+
result =
371+
if same == [] and altered == [] and missing != [] and surplus != [] do
372+
[[_ | elem_diff] | rest] = result
373+
[elem_diff | rest]
374+
else
375+
result
376+
end
377+
370378
result = Enum.reduce(surplus, result, fn({key, val}, acc) ->
371379
map_pair = format_key_value(key, val, keyword?)
372380
[[del: ", ", del: map_pair] | acc]
373381
end)
382+
374383
result = Enum.reduce(altered, result, fn({key, {val1, val2}}, acc) ->
375384
value_diff = script_inner(val1, val2)
376385
[[{:eq, ", "}, {:eq, format_key(key, keyword?)}, value_diff] | acc]
377386
end)
387+
378388
result = Enum.reduce(same, result, fn({key, val}, acc) ->
379389
map_pair = format_key_value(key, val, keyword?)
380390
[[eq: ", ", eq: map_pair] | acc]
381391
end)
392+
382393
[[_ | elem_diff] | rest] = result
383394
[{:eq, "%" <> name <> "{"}, [elem_diff | rest], {:eq, "}"}]
384395
end

lib/ex_unit/test/ex_unit/diff_test.exs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,8 @@ defmodule ExUnit.DiffTest do
242242
assert script(map2, map1) == expected
243243
assert script(map1, %{}) == [{:eq, "%{"}, [[del: "baz: 12"]], {:eq, "}"}]
244244
assert script(%{}, map1) == [{:eq, "%{"}, [[ins: "baz: 12"]], {:eq, "}"}]
245+
expected = [{:eq, "%{"}, [[del: "baz: 12"], [ins: "foo: 12"]], {:eq, "}"}]
246+
assert script(map1, %{foo: 12}) == expected
245247

246248
assert script(%{}, %{}) == [eq: "%{}"]
247249
end

0 commit comments

Comments
 (0)