Fix ExUnit list diff bug (#14275)

This commit is contained in:
Daniel Kukula
2025-02-19 08:32:15 +01:00
committed by GitHub
parent 5505de89c2
commit c65f9555aa
2 changed files with 6 additions and 3 deletions
+4 -2
View File
@@ -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),
+2 -1
View File
@@ -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]")