diff --git a/lib/runner.ex b/lib/runner.ex index 279686a..2d05c27 100644 --- a/lib/runner.ex +++ b/lib/runner.ex @@ -30,7 +30,11 @@ defmodule Runner do koans = module.all_koans passed = Enum.take_while(koans, fn(name) -> - run_koan(module, name) == :passed + case run_koan(module, name) do + :passed -> true + {:failed, error, module, name} -> Display.show_failure(error, module, name) + false + end end) if Enum.count(koans) == Enum.count(passed) do @@ -40,12 +44,10 @@ defmodule Runner do end end - def run_koan(module, name) do - case apply(module, name, []) do + def run_koan(module, name, args \\ []) do + case apply(module, name, args) do :ok -> :passed - error -> - Display.show_failure(error, module, name) - :failed + error -> {:failed, error, module, name} end end end diff --git a/test/koans_harness_test.exs b/test/koans_harness_test.exs index 39b0b21..8b27af5 100644 --- a/test/koans_harness_test.exs +++ b/test/koans_harness_test.exs @@ -10,13 +10,6 @@ defmodule KoansHarnessTest do def all_pass?(module, answers) do module.all_koans |> Enum.zip(answers) - |> Enum.map(fn({koan, answer}) -> KoansHarnessTest.test_single_koan(module, koan, answer) end) - end - - def test_single_koan(module, name, answer) do - case apply(module, name, [answer]) do - :ok -> :passed - error -> {:error, name, error} - end + |> Enum.map(fn({koan, answer}) -> Runner.run_koan(module, koan, [answer]) end) end end