improvement: better warnings on invalid patches in test

This commit is contained in:
Zach Daniel 2024-09-09 20:03:48 -04:00
parent 1068afe608
commit e47b32f196
2 changed files with 24 additions and 8 deletions

View file

@ -126,7 +126,7 @@ defmodule Igniter.Test do
Igniter.Test.sanitize_diff(diff)
compare_patch =
Igniter.Test.sanitize_diff(patch)
Igniter.Test.sanitize_diff(patch, diff)
assert String.contains?(compare_diff, compare_patch),
"""
@ -144,12 +144,32 @@ defmodule Igniter.Test do
end
@doc false
def sanitize_diff(diff) do
def sanitize_diff(diff, actual \\ nil) do
diff
|> String.split("\n")
|> Enum.filter(&String.contains?(&1, "|"))
|> Enum.map(&String.trim/1)
|> Enum.reject(&(&1 == "...|"))
|> Enum.reject(&(&1 == "...|" || &1 == ""))
|> Enum.flat_map(fn line ->
if String.contains?(line, "|") do
[line]
else
if actual do
raise """
Invalid patch provided.
#{diff}
Each line of the patch should contain at least one | character.
Actual diff:
#{actual}
"""
else
[]
end
end
end)
|> Enum.map_join("\n", fn line ->
[l, r] = String.split(line, "|", parts: 2)

View file

@ -22,13 +22,9 @@ defmodule Igniter.Project.ApplicationTest do
end
""")
|> assert_has_patch("mix.exs", """
15 15 | def application do
16 16 | [
17 - | extra_applications: [:logger]
17 + | extra_applications: [:logger],
18 + | mod: {Test.Application, []}
18 19 | ]
19 20 | end
""")
end
end