 
   @typedoc "The error state returned by `ExUnit.Test` and `ExUnit.TestModule`"
   @type failed :: [{Exception.kind(), reason :: term, Exception.stacktrace()}]
+
+  @typedoc "A map representing the results of running a test suite"
+  @type suite_result :: %{
+          excluded: non_neg_integer,
+          failures: non_neg_integer,
+          skipped: non_neg_integer,
+          total: non_neg_integer
+        }
 
   defmodule Test do
     @moduledoc """

  reverse order. In other words, the last callback set will be the first to be
  called.
  """
  @spec after_suite(
          (%{
             excluded: non_neg_integer,
             failures: non_neg_integer,
             skipped: non_neg_integer,
             total: non_neg_integer
           } ->
             any)
        ) :: :ok
  def after_suite(function) when is_function(function) do
    current_callbacks = Application.fetch_env!(:ex_unit, :after_suite)
    configure(after_suite: [function | current_callbacks])

      will be ignored.

  """
  @spec configure(Keyword.t()) :: :ok
  def configure(options) do
    Enum.each(options, fn {k, v} ->
      Application.put_env(:ex_unit, k, v)
