Files
n8n-openai-adapter/lib/logger/test/test_helper.exs
T

94 lines
1.8 KiB
Elixir

Logger.configure_backend(:console, colors: [enabled: false])
exclude = if Process.whereis(:logger), do: [:error_logger], else: [:logger]
ExUnit.start(exclude: exclude)
defmodule Logger.Case do
use ExUnit.CaseTemplate
import ExUnit.CaptureIO
using _ do
quote do
import Logger.Case
end
end
def msg(msg) do
~r/\d\d\:\d\d\:\d\d\.\d\d\d #{Regex.escape(msg)}/
end
def wait_for_handler(manager, handler) do
unless handler in :gen_event.which_handlers(manager) do
Process.sleep(10)
wait_for_handler(manager, handler)
end
end
def wait_for_logger() do
try do
:gen_event.which_handlers(Logger)
catch
:exit, _ ->
Process.sleep(10)
wait_for_logger()
else
_ ->
:ok
end
end
def capture_log(level \\ :debug, fun) do
Logger.configure(level: level)
capture_io(:user, fn ->
fun.()
Logger.flush()
end)
after
Logger.configure(level: :debug)
end
end
defmodule Logger.TestBackend do
@moduledoc """
A module that implements a custom `Logger` backend for use in testing.
This module can be used to verify events sent to `Logger`.
"""
@behaviour :gen_event
def init(_) do
{:ok, %{}}
end
def handle_call({:configure, opts}, state) do
callback_pid = Keyword.get(opts, :callback_pid)
{:ok, :ok, Map.put(state, :callback_pid, callback_pid)}
end
def handle_event(
{_level, _gl, {Logger, _msg, _ts, _md}} = event,
%{callback_pid: pid} = state
) do
send(pid, event)
{:ok, state}
end
def handle_event(_, state) do
{:ok, state}
end
def handle_info(_, state) do
{:ok, state}
end
def code_change(_old, state, _extra) do
{:ok, state}
end
def terminate(_reason, _state) do
:ok
end
end