From a8f92ae767eee39100bec38ff32fe39d017dabcb Mon Sep 17 00:00:00 2001 From: Mickael Remond Date: Fri, 1 Apr 2016 11:11:42 +0200 Subject: [PATCH] Add logger macro to help troubleshooting Elixir tests --- include/logger.hrl | 7 +++++++ test/README-quicktest.md | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 test/README-quicktest.md diff --git a/include/logger.hrl b/include/logger.hrl index 18dc7041c..df0776863 100644 --- a/include/logger.hrl +++ b/include/logger.hrl @@ -34,3 +34,10 @@ -define(CRITICAL_MSG(Format, Args), lager:critical(Format, Args)). + +%% Use only when trying to troubleshoot test problem with ExUnit +-define(EXUNIT_LOG(Format, Args), + case lists:keyfind(logger, 1, application:loaded_applications()) of + false -> ok; + _ -> 'Elixir.Logger':bare_log(error, io_lib:format(Format, Args), [?MODULE]) + end). diff --git a/test/README-quicktest.md b/test/README-quicktest.md new file mode 100644 index 000000000..43c71e86b --- /dev/null +++ b/test/README-quicktest.md @@ -0,0 +1,33 @@ +# Elixir unit tests + +## Running Elixir unit tests + +You can run Elixir unit tests with command: + +make quicktest + +You need to have ejabberd compile with Elixir and tools enabled. + +## Troubleshooting test + +To help with troubleshooting Elixir tests, we have added a special macro in ejabberd `logger.hrl` include file: ?EXUNIT_LOG + +To use this, in test file: + +1. in `setup_all, add: + + ``` + Application.start(:logger) + ``` + +2. Enable log capture for the test you want to analyse by adding + `capture_log` tag before test implementation: + + ``` + @tag capture_log: true + ``` + +In the ejabberd code, if `logger.hrl` is included, you can code adds a +EXUNIT_LOG macro: + + ?EXUNIT_LOG("My debug log:~p ~p", [Arg1, Arg2])