From 45aec00ff7b6fb9af36f92a24043af175985fa47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 23 Dec 2024 10:49:54 +0100 Subject: [PATCH] Queue async groups until state is loaded --- lib/ex_unit/lib/ex_unit/server.ex | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/lib/ex_unit/lib/ex_unit/server.ex b/lib/ex_unit/lib/ex_unit/server.ex index 1088dee923..b991816c87 100644 --- a/lib/ex_unit/lib/ex_unit/server.ex +++ b/lib/ex_unit/lib/ex_unit/server.ex @@ -173,20 +173,13 @@ defmodule ExUnit.Server do end defp take_modules(%{waiting: {from, count}} = state) do - has_async_modules? = not :queue.is_empty(state.async_modules) - has_async_groups? = state.async_groups != [] - cond do - not has_async_modules? and not has_async_groups? and state.loaded == :done -> - GenServer.reply(from, nil) - %{state | waiting: nil} - - has_async_modules? -> + not :queue.is_empty(state.async_modules) -> {reply, remaining_modules} = take_until(count, state.async_modules) GenServer.reply(from, reply) %{state | async_modules: remaining_modules, waiting: nil} - has_async_groups? -> + state.async_groups != [] and state.loaded == :done -> {groups, remaining_groups} = Enum.split(state.async_groups, count) {reply, groups} = @@ -198,6 +191,10 @@ defmodule ExUnit.Server do GenServer.reply(from, reply) %{state | groups: groups, async_groups: remaining_groups, waiting: nil} + state.loaded == :done -> + GenServer.reply(from, nil) + %{state | waiting: nil} + true -> state end