@@ -445,23 +445,14 @@ defmodule ExUnit.Case do
445445 """
446446 defmacro describe ( message , do: block ) do
447447 quote do
448- ExUnit.Case . __describe__ ( __MODULE__ , __ENV__ . line , unquote ( message ) )
449-
450- try do
448+ ExUnit.Case . __describe__ ( __MODULE__ , __ENV__ . line , unquote ( message ) , fn ->
451449 unquote ( block )
452- after
453- @ ex_unit_describe nil
454- Module . delete_attribute ( __MODULE__ , :describetag )
455-
456- for attribute <- Module . get_attribute ( __MODULE__ , :ex_unit_registered_describe_attributes ) do
457- Module . delete_attribute ( __MODULE__ , attribute )
458- end
459- end
450+ end )
460451 end
461452 end
462453
463454 @ doc false
464- def __describe__ ( module , line , message ) do
455+ def __describe__ ( module , line , message , fun ) do
465456 if Module . get_attribute ( module , :ex_unit_describe ) do
466457 raise "cannot call \" describe\" inside another \" describe\" . See the documentation " <>
467458 "for ExUnit.Case.describe/2 on named setups and how to handle hierarchies"
@@ -485,7 +476,17 @@ defmodule ExUnit.Case do
485476
486477 Module . put_attribute ( module , :ex_unit_describe , { line , message } )
487478 Module . put_attribute ( module , :ex_unit_used_describes , message )
488- :ok
479+
480+ try do
481+ fun . ( )
482+ after
483+ Module . put_attribute ( module , :ex_unit_describe , nil )
484+ Module . delete_attribute ( module , :describetag )
485+
486+ for attribute <- Module . get_attribute ( module , :ex_unit_registered_describe_attributes ) do
487+ Module . delete_attribute ( module , attribute )
488+ end
489+ end
489490 end
490491
491492 @ doc false
0 commit comments