@@ -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
420426end
0 commit comments