Skip to content

Commit 1eef3b4

Browse files
committed
Improve map keys handling in ExUnit.Diff
1 parent 07a0d88 commit 1eef3b4

File tree

2 files changed

+16
-24
lines changed

2 files changed

+16
-24
lines changed

lib/ex_unit/lib/ex_unit/diff.ex

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -184,11 +184,11 @@ defmodule ExUnit.Diff do
184184
script_list([], [], keyword?, [elem_diff | acc])
185185
end
186186

187-
defp format_list_elem(elem, false), do: inspect(elem)
187+
defp format_list_elem(elem, false),
188+
do: inspect(elem)
188189

189-
defp format_list_elem({key, val}, true) do
190-
format_key_value(Atom.to_string(key), inspect(val), true)
191-
end
190+
defp format_list_elem({key, val}, true),
191+
do: format_key_value(key, val, true)
192192

193193
defp script_tuple({_tuple1, -1}, {_tuple2, -1}, acc) do
194194
[[_ | elem_diff] | rest] = acc
@@ -226,20 +226,20 @@ defmodule ExUnit.Diff do
226226
Inspect.List.keyword?(same)
227227

228228
result = Enum.reduce(same, [], fn({key, val}, acc) ->
229-
map_pair = format_key_value(inspect(key), inspect(val), keyword?)
229+
map_pair = format_key_value(key, val, keyword?)
230230
[[eq: ", ", eq: map_pair] | acc]
231231
end)
232232
result = Enum.reduce(missing, result, fn({key, val}, acc) ->
233-
map_pair = format_key_value(inspect(key), inspect(val), keyword?)
233+
map_pair = format_key_value(key, val, keyword?)
234234
[[ins: ", ", ins: map_pair] | acc]
235235
end)
236236
result = Enum.reduce(surplus, result, fn({key, val}, acc) ->
237-
map_pair = format_key_value(inspect(key), inspect(val), keyword?)
237+
map_pair = format_key_value(key, val, keyword?)
238238
[[del: ", ", del: map_pair] | acc]
239239
end)
240240
result = Enum.reduce(altered, result, fn({key, {val1, val2}}, acc) ->
241241
value_diff = script_inner(val1, val2)
242-
[[{:eq, ", "}, script_key(key, keyword?), value_diff] | acc]
242+
[[{:eq, ", "}, {:eq, format_key(key, keyword?)}, value_diff] | acc]
243243
end)
244244
[[_ | elem_diff] | rest] = result
245245
[{:eq, "%" <> name <> "{"}, [elem_diff | rest], {:eq, "}"}]
@@ -263,24 +263,16 @@ defmodule ExUnit.Diff do
263263
{surplus, altered, missing, same}
264264
end
265265

266-
defp script_key(key, false) do
267-
[eq: inspect(key) <> " => "]
268-
end
269-
270-
defp script_key(key, true) do
271-
[eq: Atom.to_string(key) <> ": "]
272-
end
273-
274-
defp format_key_value(key, value, false) do
275-
key <> " => " <> value
266+
defp format_key(key, false) do
267+
inspect(key) <> " => "
276268
end
277269

278-
defp format_key_value(":" <> rest, value, true) do
279-
format_key_value(rest, value, true)
270+
defp format_key(key, true) do
271+
Atom.to_string(key) <> ": "
280272
end
281273

282-
defp format_key_value(key, value, true) do
283-
key <> ": " <> value
274+
defp format_key_value(key, value, keyword?) do
275+
format_key(key, keyword?) <> inspect(value)
284276
end
285277

286278
defp script_inner(term, term) do

lib/ex_unit/test/ex_unit/diff_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ defmodule ExUnit.DiffTest do
117117
expected = [
118118
{:eq, "%{"},
119119
[
120-
[[eq: "12 => "], [del: "1", ins: "3", eq: "2"]],
120+
[{:eq, "12 => "}, [del: "1", ins: "3", eq: "2"]],
121121
[del: ", ", del: "5 => 5"], [del: ", ", del: "6 => 6"], [del: ", ", del: "7 => 7"],
122122
[del: ", ", del: "8 => 8"], [del: ", ", del: "9 => 9"], [del: ", ", del: "10 => 10"],
123123
[ins: ", ", ins: "13 => 13"],
@@ -144,7 +144,7 @@ defmodule ExUnit.DiffTest do
144144
test "structs" do
145145
user1 = %User{age: 16}
146146
user2 = %User{age: 21}
147-
expected = [{:eq, "%ExUnit.DiffTest.User{"}, [[[eq: "age: "], [ins: "2", eq: "1", del: "6"]]], {:eq, "}"}]
147+
expected = [{:eq, "%ExUnit.DiffTest.User{"}, [[{:eq, "age: "}, [ins: "2", eq: "1", del: "6"]]], {:eq, "}"}]
148148
assert script(user1, user2) == expected
149149
assert script(%User{}, %{}) == nil
150150
assert script(%User{}, %ExUnit.Test{}) == nil

0 commit comments

Comments
 (0)