Skip to content

Commit 6613193

Browse files
authored
Show hints for mix test --no-color (#14198)
1 parent 7e8de3c commit 6613193

File tree

2 files changed

+27
-19
lines changed

2 files changed

+27
-19
lines changed

lib/ex_unit/lib/ex_unit/formatter.ex

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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)

lib/ex_unit/test/ex_unit/formatter_test.exs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,9 @@ defmodule ExUnit.FormatterTest do
332332
hint: you are comparing strings that have the same visual representation but are made of different Unicode codepoints
333333
"""
334334

335+
assert format_test_failure(test(), failure, 1, 80, &diff_formatter/2) ==
336+
format_test_failure(test(), failure, 1, 80, &formatter/2)
337+
335338
assert format_assertion_diff(assertion_error, 0, :infinity, &diff_formatter/2)
336339
|> kw_to_string() ==
337340
[

0 commit comments

Comments
 (0)