Skip to content

Commit e0806f9

Browse files
sneakojosevalim
authored andcommitted
Mark test cases as invalid when an exit occurs during setup_all (#12651)
1 parent 5db9d55 commit e0806f9

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

lib/ex_unit/lib/ex_unit/runner.ex

+2-1
Original file line numberDiff line numberDiff line change
@@ -293,8 +293,9 @@ defmodule ExUnit.Runner do
293293
{test_module, invalid_tests, []}
294294

295295
{:DOWN, ^module_ref, :process, ^module_pid, error} ->
296+
invalid_tests = Enum.map(tests, &%{&1 | state: {:invalid, test_module}})
296297
test_module = %{test_module | state: failed({:EXIT, module_pid}, error, [])}
297-
{test_module, [], []}
298+
{test_module, invalid_tests, []}
298299
end
299300

300301
timeout = get_timeout(config, %{})

lib/ex_unit/test/ex_unit/callbacks_test.exs

+16
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,22 @@ defmodule ExUnit.CallbacksTest do
124124
"** (MatchError) no match of right hand side value: :error"
125125
end
126126

127+
test "doesn't choke on setup_all exits" do
128+
defmodule SetupAllExitTest do
129+
use ExUnit.Case
130+
131+
setup_all _ do
132+
Process.exit(self(), :error)
133+
end
134+
135+
test "ok" do
136+
assert true
137+
end
138+
end
139+
140+
assert capture_io(fn -> ExUnit.run() end) =~ "1 test, 0 failures, 1 invalid"
141+
end
142+
127143
test "doesn't choke on dead supervisor" do
128144
defmodule StartSupervisedErrorTest do
129145
use ExUnit.Case

0 commit comments

Comments
 (0)