@@ -477,7 +477,19 @@ defmodule ExUnit.Formatter do
477
477
content_width = if width == :infinity , do: width , else: width - padding_size
478
478
479
479
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 } ->
481
493
left =
482
494
result . left
483
495
|> Diff . to_algebra ( & colorize_diff_delete ( & 1 , formatter ) )
@@ -490,32 +502,25 @@ defmodule ExUnit.Formatter do
490
502
|> Algebra . nest ( padding_size )
491
503
|> Algebra . format ( content_width )
492
504
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
504
508
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 , [ ] }
506
517
end
507
518
end
508
519
509
520
defp format_hint ( :equivalent_but_different_strings ) do
510
521
"you are comparing strings that have the same visual representation but are made of different Unicode codepoints"
511
522
end
512
523
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
-
519
524
defp colorize_diff_delete ( doc , formatter ) do
520
525
format = colorize_format ( doc , :diff_delete , :diff_delete_whitespace )
521
526
formatter . ( format , doc )
0 commit comments