Skip to content

Commit 10e586f

Browse files
committed
Handle empty data structures gracefully in ExUnit.Diff
1 parent a20ff0b commit 10e586f

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

lib/ex_unit/lib/ex_unit/diff.ex

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ defmodule ExUnit.Diff do
99
"""
1010
def script(left, right)
1111

12+
def script(term, term)
13+
when is_binary(term) or is_number(term)
14+
when is_map(term) or is_list(term) or is_tuple(term) do
15+
[eq: inspect(term)]
16+
end
17+
1218
# Binaries
1319
def script(left, right) when is_binary(left) and is_binary(right) do
1420
if String.printable?(left) and String.printable?(right) do

lib/ex_unit/test/ex_unit/diff_test.exs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ defmodule ExUnit.DiffTest do
3232
# Filtered due to bag distance
3333
assert script("aaa", "bba") == nil
3434
assert script("aaa", "baa") == [{:eq, "\""}, [ins: "b", eq: "aa", del: "a"], {:eq, "\""}]
35+
36+
assert script("", "") == [eq: "\"\""]
3537
end
3638

3739
test "lists" do
@@ -70,6 +72,8 @@ defmodule ExUnit.DiffTest do
7072
{:eq, "'"}
7173
]
7274
assert script(charlist1, charlist2) == expected
75+
76+
assert script([], []) == [eq: "[]"]
7377
end
7478

7579
test "improper lists" do
@@ -103,6 +107,8 @@ defmodule ExUnit.DiffTest do
103107
assert script(tuple1, tuple2) == expected
104108
assert script(tuple1, {}) == [{:eq, "{"}, [[del: ":hex"], [del: ", ", del: "'1.1'"]], {:eq, "}"}]
105109
assert script({}, tuple1) == [{:eq, "{"}, [[ins: ":hex"], [ins: ", ", ins: "'1.1'"]], {:eq, "}"}]
110+
111+
assert script({}, {}) == [eq: "{}"]
106112
end
107113

108114
test "maps" do
@@ -131,6 +137,8 @@ defmodule ExUnit.DiffTest do
131137
assert script(map2, map1) == expected
132138
assert script(map1, %{}) == [{:eq, "%{"}, [[del: "baz: 12"]], {:eq, "}"}]
133139
assert script(%{}, map1) == [{:eq, "%{"}, [[ins: "baz: 12"]], {:eq, "}"}]
140+
141+
assert script(%{}, %{}) == [eq: "%{}"]
134142
end
135143

136144
test "structs" do

0 commit comments

Comments
 (0)