@@ -695,17 +695,18 @@ defmodule ExUnit.Case do
695695 moduletag = Module . get_attribute ( mod , :moduletag )
696696 tag = Module . delete_attribute ( mod , :tag )
697697
698- { name , describe , describe_line , describetag } =
698+ { description , describe , describe_line , describetag } =
699699 case Module . get_attribute ( mod , :ex_unit_describe ) do
700700 { line , describe , _counter } ->
701- test_name = validate_test_name ( "#{ test_type } #{ describe } #{ name } " )
702- { test_name , describe , line , Module . get_attribute ( mod , :describetag ) }
701+ { "#{ test_type } #{ describe } #{ name } " , describe , line ,
702+ Module . get_attribute ( mod , :describetag ) }
703703
704704 nil ->
705- test_name = validate_test_name ( "#{ test_type } #{ name } " )
706- { test_name , nil , nil , [ ] }
705+ { "#{ test_type } #{ name } " , nil , nil , [ ] }
707706 end
708707
708+ name = build_test_name ( description )
709+
709710 if Module . defines? ( mod , { name , 1 } ) do
710711 raise ArgumentError , ~s( "#{ name } " is already defined in #{ inspect ( mod ) } )
711712 end
@@ -723,7 +724,7 @@ defmodule ExUnit.Case do
723724 test_type: test_type
724725 } )
725726
726- test = % ExUnit.Test { name: name , case: mod , tags: tags , module: mod }
727+ test = % ExUnit.Test { name: name , description: description , case: mod , tags: tags , module: mod }
727728 Module . put_attribute ( mod , :ex_unit_tests , test )
728729
729730 for attribute <- Module . get_attribute ( mod , :ex_unit_registered_test_attributes ) do
@@ -733,15 +734,8 @@ defmodule ExUnit.Case do
733734 name
734735 end
735736
736- @ doc """
737- Registers a test with the given environment.
738-
739- This function is deprecated in favor of `register_test/6` which performs
740- better under tight loops by avoiding `__ENV__`.
741- """
742737 # TODO: Remove me Elixir v2.0
743738 @ deprecated "Use register_test/6 instead"
744- @ doc since: "1.3.0"
745739 def register_test ( % { module: mod , file: file , line: line } , test_type , name , tags ) do
746740 register_test ( mod , file , line , test_type , name , tags )
747741 end
@@ -925,7 +919,12 @@ defmodule ExUnit.Case do
925919 tags
926920 end
927921
928- defp validate_test_name ( name ) do
922+ defp build_test_name ( name ) when byte_size ( name ) > 255 do
923+ hash = :erlang . md5 ( name ) |> binary_slice ( 0 , 3 ) |> Base . encode64 ( )
924+ build_test_name ( String . byte_slice ( name , 0 , 246 ) <> "... " <> hash )
925+ end
926+
927+ defp build_test_name ( name ) do
929928 try do
930929 String . to_atom ( name )
931930 rescue
0 commit comments