diff --git a/lib/livebook/runtime/evaluator/doctests.ex b/lib/livebook/runtime/evaluator/doctests.ex index 81e64528f..fc6e543e6 100644 --- a/lib/livebook/runtime/evaluator/doctests.ex +++ b/lib/livebook/runtime/evaluator/doctests.ex @@ -163,7 +163,13 @@ defmodule Livebook.Runtime.Evaluator.Doctests do expected = diff[:right] got = diff[:left] - source = String.trim(reason.doctest) + + {expected_label, got_label, source} = + if reason.doctest == ExUnit.AssertionError.no_value() do + {"right", "left", nil} + else + {"expected", "got", String.trim(reason.doctest)} + end message_io = if_io(reason.message != "Doctest failed", fn -> @@ -175,19 +181,22 @@ defmodule Livebook.Runtime.Evaluator.Doctests do [colorize(:red, message), "\n"] end) - source_io = [ - String.duplicate(" ", @pad_size), - format_label("doctest"), - "\n", - pad(source, @pad_size + 2) - ] + source_io = + if_io(source, fn -> + [ + String.duplicate(" ", @pad_size), + format_label("doctest"), + "\n", + pad(source, @pad_size + 2) + ] + end) expected_io = if_io(expected, fn -> [ "\n", String.duplicate(" ", @pad_size), - format_label("expected"), + format_label(expected_label), "\n", String.duplicate(" ", @pad_size + 2), expected @@ -199,7 +208,7 @@ defmodule Livebook.Runtime.Evaluator.Doctests do [ "\n", String.duplicate(" ", @pad_size), - format_label("got"), + format_label(got_label), "\n", String.duplicate(" ", @pad_size + 2), got diff --git a/test/livebook/runtime/evaluator_test.exs b/test/livebook/runtime/evaluator_test.exs index 739a59d4c..a70169c44 100644 --- a/test/livebook/runtime/evaluator_test.exs +++ b/test/livebook/runtime/evaluator_test.exs @@ -401,6 +401,11 @@ defmodule Livebook.Runtime.EvaluatorTest do iex> 1 + :who_knows + + iex> 1 = 2 + + iex> require ExUnit.Assertions + ...> ExUnit.Assertions.assert false """ @doc """ @@ -444,7 +449,7 @@ defmodule Livebook.Runtime.EvaluatorTest do assert_receive {:runtime_evaluation_output, :code_1, {:text, doctest_result}} - assert doctest_result =~ "6 doctests, 5 failures" + assert doctest_result =~ "8 doctests, 7 failures" assert doctest_result =~ "Doctest did not compile, got: (TokenMissingError)" assert doctest_result =~