Skip to content

Commit d4eda43

Browse files
committed
Report compile-time doctest errors during test runtime
1 parent 71831d6 commit d4eda43

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

lib/ex_unit/lib/ex_unit/doc_test.ex

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,6 @@ defmodule ExUnit.DocTest do
8383
run.
8484
"""
8585

86-
defexception CompileError, error: nil, expression: nil do
87-
def message(__MODULE__[error: error, expression: expr]) do
88-
"#{inspect elem(error, 0)}: #{error.message} while parsing expression `#{expr}`"
89-
end
90-
end
91-
9286
defrecord Test, fun_arity: nil, line: nil, expr: nil, expected: nil
9387

9488
@doc """
@@ -166,8 +160,8 @@ defmodule ExUnit.DocTest do
166160
location = [line: line, file: Path.relative_to(file, System.cwd!)]
167161
stack = Macro.escape [{ module, :__MODULE__, 0, location }]
168162

169-
expr_ast = string_to_ast(line, file, test.expr)
170-
expected_ast = string_to_ast(line, file, expected)
163+
expr_ast = string_to_ast(module, line, file, test.expr)
164+
expected_ast = string_to_ast(module, line, file, expected)
171165

172166
quoted =
173167
quote do
@@ -212,7 +206,7 @@ defmodule ExUnit.DocTest do
212206
location = [line: line, file: Path.relative_to(file, System.cwd!)]
213207
stack = Macro.escape [{ module, :__MODULE__, 0, location }]
214208

215-
expr_ast = string_to_ast(line, file, test.expr)
209+
expr_ast = string_to_ast(module, line, file, test.expr)
216210

217211
quoted =
218212
quote do
@@ -256,11 +250,21 @@ defmodule ExUnit.DocTest do
256250
quoted
257251
end
258252

259-
defp string_to_ast(line, file, expr) do
253+
defp string_to_ast(module, line, file, expr) do
254+
location = [line: line, file: Path.relative_to(file, System.cwd!)]
255+
stack = Macro.escape [{ module, :__MODULE__, 0, location }]
260256
try do
261257
Code.string_to_ast!(expr, line: line, file: file)
262258
rescue e ->
263-
raise CompileError, error: e, expression: expr
259+
quote do
260+
raise ExUnit.ExpectationError,
261+
[ prelude: "Expected doctest's expression",
262+
expected: unquote(expr),
263+
actual: "successfully",
264+
reason: "compile",
265+
instead: unquote(Macro.escape e) ],
266+
unquote(stack)
267+
end
264268
end
265269
end
266270

0 commit comments

Comments
 (0)