Skip to content

Commit ec83279

Browse files
committed
Little refactoring
1 parent 5aa5268 commit ec83279

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

lib/ex_unit/lib/ex_unit/doc_test.ex

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -332,15 +332,14 @@ defmodule ExUnit.DocTest do
332332
[]
333333
end
334334

335-
defp extract_tests([], _line, "", "", [test=Test[exprs: exprs]|t], _) do
336-
test = test.exprs(Enum.reverse(exprs))
337-
Enum.reverse([test|t])
335+
defp extract_tests([], _line, "", "", acc, _) do
336+
Enum.reverse(reverse_last_test(acc))
338337
end
339338

340339
# End of input and we've still got a test pending.
341340
defp extract_tests([], _, expr_acc, expected_acc, [test=Test[exprs: exprs]|t], _) do
342-
test = test.exprs(Enum.reverse([{ expr_acc, {:test, expected_acc} } | exprs]))
343-
Enum.reverse([test|t])
341+
test = test.exprs([{ expr_acc, {:test, expected_acc} } | exprs])
342+
Enum.reverse(reverse_last_test([test|t]))
344343
end
345344

346345
# We've encountered the next test on an adjacent line. Put them into one group.
@@ -349,14 +348,15 @@ defmodule ExUnit.DocTest do
349348
extract_tests(list, line, "", "", [test|t], newtest)
350349
end
351350

351+
# Store expr_acc and start a new test case.
352+
defp extract_tests([<< "iex>", string :: binary>>|lines], line, "", expected_acc, acc, true) do
353+
acc = reverse_last_test(acc)
354+
test = Test[line: line]
355+
extract_tests(lines, line, string, expected_acc, [test|acc], false)
356+
end
357+
352358
# Store expr_acc.
353-
defp extract_tests([<< "iex>", string :: binary>>|lines], line, "", expected_acc, acc, newtest) do
354-
if newtest do
355-
if match?([test=Test[exprs: exprs] | t], acc) do
356-
acc = [test.exprs(Enum.reverse(exprs)) | t]
357-
end
358-
acc = [Test[line: line]|acc]
359-
end
359+
defp extract_tests([<< "iex>", string :: binary>>|lines], line, "", expected_acc, acc, false) do
360360
extract_tests(lines, line, string, expected_acc, acc, false)
361361
end
362362

@@ -417,4 +417,10 @@ defmodule ExUnit.DocTest do
417417
defp skip_iex_number(<< _ :: 8, string :: binary >>) do
418418
skip_iex_number(string)
419419
end
420+
421+
defp reverse_last_test([]), do: []
422+
defp reverse_last_test([test=Test[exprs: exprs] | t]) do
423+
test = test.exprs(Enum.reverse(exprs))
424+
[test | t]
425+
end
420426
end

0 commit comments

Comments
 (0)