@@ -359,11 +359,18 @@ defmodule Mix.Tasks.Test.Coverage do
359359
360360 defp print_summary ( results , totals , opts ) when is_list ( opts ) do
361361 threshold = get_threshold ( opts )
362- Mix . shell ( ) . info ( "Percentage | Module" )
363- Mix . shell ( ) . info ( "-----------|--------------------------" )
364- results |> Enum . sort ( ) |> Enum . each ( & display ( & 1 , threshold ) )
365- Mix . shell ( ) . info ( "-----------|--------------------------" )
366- display ( { totals , "Total" } , threshold )
362+
363+ results =
364+ results |> Enum . sort ( ) |> Enum . map ( fn { coverage , module } -> { coverage , inspect ( module ) } end )
365+
366+ name_max_length = results |> Enum . map ( & String . length ( elem ( & 1 , 1 ) ) ) |> Enum . max ( ) |> max ( 10 )
367+ name_separator = String . duplicate ( "-" , name_max_length )
368+
369+ Mix . shell ( ) . info ( "| Percentage | #{ String . pad_trailing ( "Module" , name_max_length ) } |" )
370+ Mix . shell ( ) . info ( "|------------|-#{ name_separator } -|" )
371+ Enum . each ( results , & display ( & 1 , threshold , name_max_length ) )
372+ Mix . shell ( ) . info ( "|------------|-#{ name_separator } -|" )
373+ display ( { totals , "Total" } , threshold , name_max_length )
367374 Mix . shell ( ) . info ( "" )
368375 end
369376
@@ -374,14 +381,16 @@ defmodule Mix.Tasks.Test.Coverage do
374381 Mix . shell ( ) . info ( "" )
375382 end
376383
377- defp display ( { percentage , name } , threshold ) do
384+ defp display ( { percentage , name } , threshold , pad_length ) do
378385 Mix . shell ( ) . info ( [
386+ "| " ,
379387 color ( percentage , threshold ) ,
380388 format_number ( percentage , 9 ) ,
381389 "%" ,
382390 :reset ,
383391 " | " ,
384- format_name ( name )
392+ String . pad_trailing ( name , pad_length ) ,
393+ " |"
385394 ] )
386395 end
387396
@@ -395,9 +404,6 @@ defmodule Mix.Tasks.Test.Coverage do
395404
396405 defp format_number ( number , length ) , do: :io_lib . format ( "~#{ length } .2f" , [ number ] )
397406
398- defp format_name ( name ) when is_binary ( name ) , do: name
399- defp format_name ( mod ) when is_atom ( mod ) , do: inspect ( mod )
400-
401407 defp get_threshold ( true ) , do: @ default_threshold
402408 defp get_threshold ( opts ) , do: Keyword . get ( opts , :threshold , @ default_threshold )
403409end
0 commit comments