@@ -477,7 +477,19 @@ defmodule ExUnit.Formatter do
477477 content_width = if width == :infinity , do: width , else: width - padding_size
478478
479479 case format_diff ( left , right , context , formatter ) do
480- { result , env } ->
480+ { nil , hints } when is_atom ( context ) ->
481+ { if_value ( left , inspect ) , if_value ( right , inspect ) , hints }
482+
483+ { nil , hints } ->
484+ left =
485+ Macro . prewalk ( left , fn
486+ { _ , [ original: original ] , _ } -> original
487+ other -> other
488+ end )
489+
490+ { if_value ( left , & code_multiline ( & 1 , padding_size ) ) , if_value ( right , inspect ) , hints }
491+
492+ { result , hints } ->
481493 left =
482494 result . left
483495 |> Diff . to_algebra ( & colorize_diff_delete ( & 1 , formatter ) )
@@ -490,32 +502,25 @@ defmodule ExUnit.Formatter do
490502 |> Algebra . nest ( padding_size )
491503 |> Algebra . format ( content_width )
492504
493- { left , right , Enum . map ( env . hints , & { :hint , format_hint ( & 1 ) } ) }
494-
495- nil when is_atom ( context ) ->
496- { if_value ( left , inspect ) , if_value ( right , inspect ) , [ ] }
497-
498- nil ->
499- left =
500- Macro . prewalk ( left , fn
501- { _ , [ original: original ] , _ } -> original
502- other -> other
503- end )
505+ { left , right , hints }
506+ end
507+ end
504508
505- { if_value ( left , & code_multiline ( & 1 , padding_size ) ) , if_value ( right , inspect ) , [ ] }
509+ defp format_diff ( left , right , context , formatter ) do
510+ if has_value? ( left ) and has_value? ( right ) do
511+ { result , env } = find_diff ( left , right , context )
512+ result = if formatter . ( :diff_enabled? , false ) , do: result
513+ hints = Enum . map ( env . hints , & { :hint , format_hint ( & 1 ) } )
514+ { result , hints }
515+ else
516+ { nil , [ ] }
506517 end
507518 end
508519
509520 defp format_hint ( :equivalent_but_different_strings ) do
510521 "you are comparing strings that have the same visual representation but are made of different Unicode codepoints"
511522 end
512523
513- defp format_diff ( left , right , context , formatter ) do
514- if has_value? ( left ) and has_value? ( right ) and formatter . ( :diff_enabled? , false ) do
515- find_diff ( left , right , context )
516- end
517- end
518-
519524 defp colorize_diff_delete ( doc , formatter ) do
520525 format = colorize_format ( doc , :diff_delete , :diff_delete_whitespace )
521526 formatter . ( format , doc )
0 commit comments