%% @doc This test is named zzzz_gh280_crash because it has to be run first and tests are run in %% reverse alphabetical order. %% %% The problem we are attempting to detect here is when log_mf_h is installed as a handler for error_logger %% and lager starts up to replace the current handlers with its own. This causes a start up crash because %% OTP error logging modules do not have any notion of a lager-style log level. -module(zzzz_gh280_crash). -include_lib("eunit/include/eunit.hrl"). gh280_crash_test() -> {timeout, 30, fun() -> gh280_impl() end}. gh280_impl() -> application:stop(lager), application:stop(goldrush), error_logger:tty(false), %% see https://github.com/erlang/otp/blob/maint/lib/stdlib/src/log_mf_h.erl#L81 %% for an explanation of the init arguments to log_mf_h ok = gen_event:add_sup_handler(error_logger, log_mf_h, log_mf_h:init("/tmp", 10000, 5)), lager:start(), Result = receive {gen_event_EXIT,log_mf_h,normal} -> true; {gen_event_EXIT,Handler,Reason} -> {Handler,Reason}; X -> X after 10000 -> timeout end, ?assert(Result), application:stop(lager), application:stop(goldrush).