Я пытаюсь собрать пользовательскую задачу микширования, которая будет выполнять задачу mix test
специализированным способом.Моя задача микширования mix test.pretty
.
. До сих пор я написал самую простую в мире пользовательскую задачу микширования:
defmodule Mix.Tasks.Test.Pretty do
use Mix.Task
@shortdoc "Simply runs the Hello.say/0 function"
def run(_) do
Mix.env(:test)
Mix.Task.run("test", ["--formatter", "ExPrettyTest.Formatter"])
end
end
К сожалению, когда я запускаю задачу (mix test.pretty
)Я получаю эту ошибку:
** (RuntimeError) не может вызвать операцию песочницы с пулом DBConnection.ConnectionPool.Чтобы использовать изолированную программную среду SQL, настройте ваш пул репозитория следующим образом:
pool: Ecto.Adapters.SQL.Sandbox
(ecto_sql) lib/ecto/adapters/sql/sandbox.ex:491: Ecto.Adapters.SQL.Sandbox.lookup_meta!/1
(ecto_sql) lib/ecto/adapters/sql/sandbox.ex:389: Ecto.Adapters.SQL.Sandbox.mode/2
(elixir) lib/code.ex:767: Code.require_file/2
(elixir) lib/enum.ex:765: Enum."-each/2-lists^foreach/1-0-"/2
(elixir) lib/enum.ex:765: Enum.each/2
(mix) lib/mix/tasks/test.ex:369: Mix.Tasks.Test.run/1
(mix) lib/mix/task.ex:316: Mix.Task.run_task/3
(mix) lib/mix/cli.ex:79: Mix.CLI.run_task/2
(elixir) lib/code.ex:767: Code.require_file/2
отображается , что тестовая среда не загружается -возможно test_helper.exs не был загружен?
Я могу выполнить задачу следующим образом: MIX_ENV=test mix test.pretty
, и она отлично работает.Я бы хотел, чтобы это работало без необходимости помещать туда тест MIX_ENV = каждый раз, когда я запускаю задачу.В моей голове весь смысл наличия пользовательского теста состоял в том, чтобы избежать необходимости указывать эту среду и аргумент форматера вручную.
Мой рабочий процесс должен запускать mix test
, если есть ошибки, я думаю, что я запускаю mix test.pretty
, который дает мне приятный, потрясающий тестовый вывод с использованием механизма пользовательского форматирования в ExUnit.После того, как я исправил ошибки, я могу выбрать, запускать файл довольно или нет, отдельный тест или нет и т. Д.
Спасибо!