 
   @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 """

  if ExUnit is started via `start/1`.

  Returns a map containing the total number of tests, the number
  of failures and the number of skipped tests.
  """
  def run do
    config = persist_defaults(configuration())
    ExUnit.Runner.run(config, nil)

  reverse order. In other words, the last callback set will be the first to be
  called.
  """
  @spec after_suite((suite_result() -> 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])
