Files
n8n-openai-adapter/lib/ex_unit/test/ex_unit_test.exs
T
José Valim adf7834529 Ensure ExUnit doesn't hang on linked failures
Thanks to @pminten for reporting this issue.
2014-01-18 19:41:19 +01:00

125 lines
2.6 KiB
Elixir

Code.require_file "test_helper.exs", __DIR__
defmodule ExUnit.CounterFormatter do
@timeout 30_000
@behaviour ExUnit.Formatter
use GenServer.Behaviour
def suite_started(opts) do
{ :ok, pid } = :gen_server.start_link(__MODULE__, opts, [])
pid
end
def suite_finished(id, _run_us, _load_us) do
:gen_server.call(id, { :suite_finished }, @timeout)
end
def case_started(_id, _test_case) do
:ok
end
def case_finished(_id, _test_case) do
:ok
end
def test_started(_id, _test) do
:ok
end
def test_finished(id, test) do
:gen_server.cast(id, { :test_finished, test })
end
def init(_opts) do
{ :ok, 0 }
end
def handle_call({ :suite_finished }, _from, tests_counter) do
{ :stop, :normal, tests_counter, tests_counter }
end
def handle_cast({ :test_finished, ExUnit.Test[state: { :skip, _ }] }, tests_counter) do
{ :noreply, tests_counter }
end
def handle_cast({ :test_finished, _ }, tests_counter) do
{ :noreply, tests_counter + 1 }
end
end
defmodule ExUnitTest do
use ExUnit.Case, async: false
setup do
ExUnit.configure(formatter: ExUnit.CounterFormatter)
:ok
end
teardown do
ExUnit.configure(formatter: ExUnit.CLIFormatter)
:ok
end
test "it supports many runs" do
defmodule SampleTest do
use ExUnit.Case, async: false
test "true" do
assert true
end
test "false" do
assert false
end
end
assert ExUnit.run == 2
end
test "it doesn't hang on exists" do
defmodule EventServerTest do
use ExUnit.Case, async: false
test "spawn and crash" do
Process.spawn_link(fn ->
exit :foo
end)
receive after: (1000 -> :ok)
end
end
assert ExUnit.run == 1
end
test "filtering cases with tags" do
defmodule ParityTest do
use ExUnit.Case
test "zero", do: assert true
@tag even: false
test "one", do: assert true
@tag even: true
test "two", do: assert true
@tag even: false
test "three", do: assert true
end
test_cases = ExUnit.Server.start_run
assert run_with_filter([], test_cases) == 4
assert run_with_filter([exclude: [even: true]], test_cases) == 3
assert run_with_filter([exclude: :even], test_cases) == 1
assert run_with_filter([exclude: :even, include: [even: true]], test_cases) == 2
assert run_with_filter([exclude: :test, include: [even: true]], test_cases) == 1
end
defp run_with_filter(filters, { async, sync, load_us }) do
opts = Keyword.merge(ExUnit.configuration, filters)
ExUnit.Runner.run(async, sync, opts, load_us)
end
end