@@ -332,15 +332,14 @@ defmodule ExUnit.DocTest do
332
332
[ ]
333
333
end
334
334
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 ) )
338
337
end
339
338
340
339
# End of input and we've still got a test pending.
341
340
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 ] ) )
344
343
end
345
344
346
345
# We've encountered the next test on an adjacent line. Put them into one group.
@@ -349,14 +348,15 @@ defmodule ExUnit.DocTest do
349
348
extract_tests ( list , line , "" , "" , [ test | t ] , newtest )
350
349
end
351
350
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
+
352
358
# 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
360
360
extract_tests ( lines , line , string , expected_acc , acc , false )
361
361
end
362
362
@@ -417,4 +417,10 @@ defmodule ExUnit.DocTest do
417
417
defp skip_iex_number ( << _ :: 8 , string :: binary >> ) do
418
418
skip_iex_number ( string )
419
419
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
420
426
end
0 commit comments