Handle assertion errors in doctests (#1752)

This commit is contained in:
Jonatan Kłosko 2023-03-06 19:36:54 +01:00 committed by GitHub
parent 503f8df76a
commit 429a89b1aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 10 deletions

View file

@ -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

View file

@ -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 =~