Fix ExUnit list diff bug (#14275)
This commit is contained in:
@@ -377,7 +377,9 @@ defmodule ExUnit.Diff do
|
||||
{parsed_left, improper_left, operators_left, length_left} =
|
||||
split_left_list(left, 0, env.context)
|
||||
|
||||
{parsed_right, improper_right} = split_right_list(right, length_left, [])
|
||||
element_limit = if improper_left == [], do: -1, else: length_left
|
||||
{parsed_right, improper_right} = split_right_list(right, element_limit, [])
|
||||
|
||||
{parsed_diff, parsed_post_env} = myers_difference_list(parsed_left, parsed_right, env)
|
||||
|
||||
{improper_diff, improper_post_env} =
|
||||
@@ -410,7 +412,7 @@ defmodule ExUnit.Diff do
|
||||
diff(left, right, env)
|
||||
end
|
||||
|
||||
defp split_right_list([head | tail], length, acc) when length > 0,
|
||||
defp split_right_list([head | tail], length, acc) when length != 0,
|
||||
do: split_right_list(tail, length - 1, [head | acc])
|
||||
|
||||
defp split_right_list(rest, _length, acc),
|
||||
|
||||
@@ -237,6 +237,7 @@ defmodule ExUnit.DiffTest do
|
||||
refute_diff([:a, :b, :c] = [:a, :b, :x], "[:a, :b, -:c-]", "[:a, :b, +:x+]")
|
||||
refute_diff([:a, :x, :c] = [:a, :b, :c], "[:a, -:x-, :c]", "[:a, +:b+, :c]")
|
||||
refute_diff([:a, :d, :b, :c] = [:a, :b, :c, :d], "[:a, -:d-, :b, :c]", "[:a, :b, :c, +:d+]")
|
||||
refute_diff([:b, :c] = [:a, :b, :c], "[:b, :c]", "[+:a+, :b, :c]")
|
||||
|
||||
refute_diff([:a, :b, :c] = [:a, :b, []], "[:a, :b, -:c-]", "[:a, :b, +[]+]")
|
||||
refute_diff([:a, :b, []] = [:a, :b, :c], "[:a, :b, -[]-]", "[:a, :b, +:c+]")
|
||||
@@ -354,7 +355,7 @@ defmodule ExUnit.DiffTest do
|
||||
)
|
||||
|
||||
refute_diff([:a, :b | [:c]] = [:a, :b], "[:a, :b | [-:c-]]", "[:a, :b]")
|
||||
refute_diff([:a, :b | []] = [:a, :b, :c], "[:a, :b | -[]-]", "[:a, :b, +:c+]")
|
||||
refute_diff([:a, :b | []] = [:a, :b, :c], "[:a, :b | []]", "[:a, :b, +:c+]")
|
||||
refute_diff([:a, :b | [:c, :d]] = [:a, :b, :c], "[:a, :b | [:c, -:d-]]", "[:a, :b, :c]")
|
||||
refute_diff([:a, :b | [:c, :d]] = [:a], "[:a, -:b- | [-:c-, -:d-]]", "[:a]")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user