diff --git a/lib/execute.ex b/lib/execute.ex index 4ddebaef..485e0c59 100644 --- a/lib/execute.ex +++ b/lib/execute.ex @@ -38,14 +38,14 @@ defmodule Execute do defp expand(:ok, _), do: :ok - defp expand(error, module) do + defp expand({:error, stacktrace, exception}, module) do {file, line} = - System.stacktrace() + stacktrace |> Enum.drop_while(&(!in_koan?(&1, module))) |> List.first() |> extract_file_and_line - %{error: error, file: file, line: line} + %{error: exception, file: file, line: line} end defp in_koan?({module, _, _, _}, koan), do: module == koan diff --git a/lib/koans.ex b/lib/koans.ex index 31fb9de2..5ab03b38 100644 --- a/lib/koans.ex +++ b/lib/koans.ex @@ -22,7 +22,7 @@ defmodule Koans do unquote(compiled_body) :ok rescue - e -> e + e -> {:error, __STACKTRACE__, e} end end end @@ -39,7 +39,7 @@ defmodule Koans do unquote(single_var) :ok rescue - e -> e + e -> {:error, __STACKTRACE__, e} end end end @@ -57,7 +57,7 @@ defmodule Koans do unquote(multi_var) :ok rescue - e -> e + e -> {:error, __STACKTRACE__, e} end end end diff --git a/test/display/failure_test.exs b/test/display/failure_test.exs index bea195eb..addce2cd 100644 --- a/test/display/failure_test.exs +++ b/test/display/failure_test.exs @@ -39,7 +39,7 @@ defmodule FailureTests do test "only offending lines are displayed for errors" do [koan] = SingleArity.all_koans() - error = apply(SingleArity, koan, []) |> error() + error = apply(SingleArity, koan, []) |> Tuple.to_list |> List.last |> error assert Failure.format_failure(error) == """ Assertion failed in some_file.ex:42\nmatch?(:foo, ___) diff --git a/test/koans/comprehensions_koans_test.exs b/test/koans/comprehensions_koans_test.exs index bcf74982..22f056f6 100644 --- a/test/koans/comprehensions_koans_test.exs +++ b/test/koans/comprehensions_koans_test.exs @@ -9,7 +9,7 @@ defmodule ComprehensionsTests do ["Hello World", "Apple Pie"], ["little dogs", "little cats", "big dogs", "big cats"], [4, 5, 6], - ["Apple Pie", "Pecan Pie", "Pumpkin Pie"], + %{"Pecan" => "Pecan Pie", "Pumpkin" => "Pumpkin Pie"} ] test_all(Comprehensions, answers)