test/support/test_file_utils.ex

defmodule ExshomeTest.TestFileUtils do
  @moduledoc """
  File manipulation utils for tests.
  """

  @spec generate_test_folder() :: String.t()
  def generate_test_folder do
    test_path =
      Path.join([
        Application.get_env(:exshome, :root_folder),
        "ExshomeTest",
        "#{Ecto.UUID.generate()}"
      ])

    File.mkdir_p!(test_path)
    ExshomeTest.TestRegistry.put(__MODULE__, test_path)

    ExUnit.Callbacks.on_exit(fn ->
      File.rm_rf(test_path)
    end)

    test_path
  end

  @spec get_test_folder() :: String.t()
  def get_test_folder do
    ExshomeTest.TestRegistry.get!(__MODULE__)
  end
end