Когда я запускаю тесты в моем приложении Elixir mix, у меня есть несколько случаев, когда я включаю несколько вызовов Logger.debug()
для мониторинга поведения. Я обнаружил, что когда я вызываю mix test
из командной строки, вывод Logger окрашивается в светло-синий цвет, и если я делаю что-то вроде добавления пользовательского цвета к вызову .debug()
, вывод окрашивается соответственно -
test "some behavior" do
Logger.debug("foo", ansi_color: :yellow)
assert true
end
записывает строки журнала желтым цветом, как и ожидалось.
Однако я заметил, что если я запускаю свои тесты из сеанса iex
, цвета не применяются, просто пишутсяк терминалу с цветом шрифта по умолчанию (в моем случае серым) -
iex(1)> Mix.shell().cmd(
"mix test --color",
env: [{"MIX_ENV", "test"}]
)
Почему запуск тестов из командной строки bash приводит к красочным выводам, а запуск их из iex приводит кмой цвет шрифта по умолчанию?
Для контекста - я запускаю его на Mac (Mojave), из командной строки bash (как уже упоминалось), Elixir версии 1.8.1.
По общему признанию,сам по себе это довольно тривиальный вопрос - но я пытаюсь лучше понять оболочку Elixir и различные взаимодействия Mix с оболочкой и системой, и взломать это может помочь мне лучше разобратьсяПонимание того, что вообще происходит под капотом. Это не то, чего я ожидал бы, я хотел бы знать, почему.