Skip to content

Commit 4ce444a

Browse files
committed
Include location info in the multiple exceptions error
1 parent da4565e commit 4ce444a

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

lib/ex_unit/lib/ex_unit/doc_test.ex

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ defmodule ExUnit.DocTest do
167167
:"test doc at #{inspect m}.#{f}/#{a} (#{n})"
168168
end
169169

170-
defp test_content(Test[exprs: exprs, line: line], module, do_import) do
170+
defp test_content(Test[exprs: exprs, line: line, fun_arity: fun_arity], module, do_import) do
171171
file = module.__info__(:compile)[:source]
172172
location = [line: line, file: Path.relative_to(file, System.cwd!)]
173173
stack = Macro.escape [{ module, :__MODULE__, 0, location }]
@@ -179,11 +179,11 @@ defmodule ExUnit.DocTest do
179179

180180
exceptions_num = Enum.count exprs, exc_filter_fn
181181
if exceptions_num > 1 do
182-
# FIXME: stacktrace pointing to the doctest?
183-
raise Error, [message: "Multiple exceptions in one doctest case are not supported"]
184-
185-
# this doesn't work :( nothing is raised
186-
#raise Error[message: "Multiple exceptions in one doctest case are not supported"], [], stack
182+
# Format the info about error location as if it were a part of the
183+
# stacktrace
184+
{ fun, arity } = fun_arity
185+
error_info = " #{file}:#{line}: #{inspect module}.#{fun}/#{arity}"
186+
raise Error, [message: "Multiple exceptions in one doctest case are not supported.\n#{error_info}"]
187187
end
188188

189189
{ tests, whole_expr } = Enum.map_reduce exprs, "", fn {expr, expected}, acc ->

lib/ex_unit/test/ex_unit/doc_test_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ defmodule ExUnit.DocTestTest.ExceptionModule do
4141
iex> 2 + ""
4242
** (ArithmeticError) bad argument in arithmetic expression
4343
"""
44-
def two_exceptions_in_single_context
44+
def two_exceptions
4545
end
4646

4747
defmodule ExUnit.DocTestTest.SomewhatGoodModule do
@@ -98,7 +98,7 @@ defmodule ExUnit.DocTestTest do
9898
doctest ExUnit.DocTestTest.SomewhatGoodModule1, except: [test_fun1: 0], import: true
9999
doctest ExUnit.DocTestTest.NoImport
100100

101-
assert_raise ExUnit.DocTest.Error, "Multiple exceptions in one doctest case are not supported", fn ->
101+
assert_raise ExUnit.DocTest.Error, fn ->
102102
doctest ExUnit.DocTestTest.ExceptionModule
103103
end
104104

0 commit comments

Comments
 (0)