Skip to content

Commit

Permalink
Merge pull request #539 from paulo-ferraz-oliveira/feature/erl_anno_i…
Browse files Browse the repository at this point in the history
…nstead_of_guessing

Further adapt to OTP 24 + adopt GHA
  • Loading branch information
jadeallenx committed Feb 25, 2021
2 parents a14b980 + f2ae8fe commit d525470
Show file tree
Hide file tree
Showing 9 changed files with 82 additions and 74 deletions.
25 changes: 25 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
name: build
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
ci:
name: >
Run checks and tests over ${{matrix.otp_vsn}} and ${{matrix.os}}
runs-on: ${{matrix.os}}
container:
image: erlang:${{matrix.otp_vsn}}
options: --user 1001
strategy:
matrix:
otp_vsn: [21.3, 22.3, 23.2]
os: [ubuntu-latest]
steps:
- uses: actions/checkout@v2
- run: rebar3 dialyzer
- run: rebar3 eunit
6 changes: 0 additions & 6 deletions .travis.yml

This file was deleted.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ to provide a more traditional way to perform logging in an erlang application
that plays nicely with traditional UNIX logging tools like logrotate and
syslog.

[Travis-CI](http://travis-ci.org/erlang-lager/lager) :: [![Build Status](https://travis-ci.org/erlang-lager/lager.svg?branch=master)]
[![Build Status](https://github.com/erlang-lager/lager/workflows/build/badge.svg)](https://github.com/erlang-lager/lager)
[![Hex pm](https://img.shields.io/hexpm/v/lager)](https://hex.pm/packages/lager)

Features
Expand Down
1 change: 0 additions & 1 deletion rebar.config
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

{erl_opts, [
{lager_extra_sinks, ['__lager_test_sink']},
{platform_define, "^(19|20|21|22)", test_statem},
{platform_define, "^18", 'FUNCTION_NAME', unavailable},
{platform_define, "^18", 'FUNCTION_ARITY', 0},
debug_info,
Expand Down
2 changes: 1 addition & 1 deletion src/lager.erl
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ start(App) ->
start_ok(App, application:start(App, permanent)).

start_ok(_App, ok) -> ok;
start_ok(_App, {error, {already_started, _App}}) -> ok;
start_ok(App, {error, {already_started, App}}) -> ok;
start_ok(App, {error, {not_started, Dep}}) ->
ok = start(Dep),
start(App);
Expand Down
7 changes: 2 additions & 5 deletions src/lager_transform.erl
Original file line number Diff line number Diff line change
Expand Up @@ -267,11 +267,8 @@ handle_args(DefaultAttrs, Line, [Arg1, Arg2]) ->
handle_args(DefaultAttrs, _Line, [Attrs, Format, Args]) ->
{concat_lists(Attrs, DefaultAttrs), Format, Args}.

make_varname(Prefix, Loc) ->
list_to_atom(Prefix ++ atom_to_list(get(module)) ++ integer_to_list(line_from_loc(Loc))).

line_from_loc({Line, _Col}) -> Line;
line_from_loc(Line) -> Line.
make_varname(Prefix, CallAnno) ->
list_to_atom(Prefix ++ atom_to_list(get(module)) ++ integer_to_list(erl_anno:line(CallAnno))).

%% concat 2 list ASTs by replacing the terminating [] in A with the contents of B
concat_lists({var, Line, _Name}=Var, B) ->
Expand Down
9 changes: 0 additions & 9 deletions test/crash_statem.erl
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
-module(crash_statem).
%% we're only going to compile this on OTP 19+
-ifdef(test_statem).
-behaviour(gen_statem).

-export([
Expand Down Expand Up @@ -45,11 +44,3 @@ handle_event({call, _From}, timeout, _Arg, _Data) ->
{keep_state_and_data, [{state_timeout, 0, timeout}]};
handle_event({call, _From}, {stop, Reason}, state1, _Data) ->
{stop, Reason}.

-else.
-export([start/0, crash/0]).

start() -> ok.
crash() -> ok.

-endif.
80 changes: 45 additions & 35 deletions test/lager_test_backend.erl
Original file line number Diff line number Diff line change
Expand Up @@ -305,18 +305,18 @@ lager_test_() ->
lager:info(Attr, "hello ~p", Args),
lager:info([{d, delta}, {g, gamma}], Fmt, Args),
?assertEqual(6, count()),
{_Level, _Time, Message, Metadata} = pop(),
{Level, _Time, Message, Metadata} = pop(),
?assertMatch([{a, alpha}, {b, beta}|_], Metadata),
?assertEqual("hello", lists:flatten(Message)),
{_Level, _Time2, Message2, _Metadata2} = pop(),
{Level, _Time2, Message2, _Metadata2} = pop(),
?assertEqual("hello world", lists:flatten(Message2)),
{_Level, _Time3, Message3, _Metadata3} = pop(),
{Level, _Time3, Message3, _Metadata3} = pop(),
?assertEqual("format world", lists:flatten(Message3)),
{_Level, _Time4, Message4, _Metadata4} = pop(),
{Level, _Time4, Message4, _Metadata4} = pop(),
?assertEqual("hello world", lists:flatten(Message4)),
{_Level, _Time5, Message5, _Metadata5} = pop(),
{Level, _Time5, Message5, _Metadata5} = pop(),
?assertEqual("hello world", lists:flatten(Message5)),
{_Level, _Time6, Message6, Metadata6} = pop(),
{Level, _Time6, Message6, Metadata6} = pop(),
?assertMatch([{d, delta}, {g, gamma}|_], Metadata6),
?assertEqual("format world", lists:flatten(Message6)),
ok
Expand All @@ -335,18 +335,18 @@ lager_test_() ->
lager:info([{K, atom_to_list(V)} || {K, V} <- Attr], "hello ~p", [{atom, X} || X <- Args]),
lager:info([{d, delta}, {g, gamma}], Fmt, [{atom, X} || X <- Args]),
?assertEqual(6, count()),
{_Level, _Time, Message, Metadata} = pop(),
{Level, _Time, Message, Metadata} = pop(),
?assertMatch([{a, "alpha"}, {b, "beta"}|_], Metadata),
?assertEqual("hello", lists:flatten(Message)),
{_Level, _Time2, Message2, _Metadata2} = pop(),
{Level, _Time2, Message2, _Metadata2} = pop(),
?assertEqual("hello {atom,world}", lists:flatten(Message2)),
{_Level, _Time3, Message3, _Metadata3} = pop(),
{Level, _Time3, Message3, _Metadata3} = pop(),
?assertEqual("format world", lists:flatten(Message3)),
{_Level, _Time4, Message4, _Metadata4} = pop(),
{Level, _Time4, Message4, _Metadata4} = pop(),
?assertEqual("hello {atom,world}", lists:flatten(Message4)),
{_Level, _Time5, Message5, _Metadata5} = pop(),
{Level, _Time5, Message5, _Metadata5} = pop(),
?assertEqual("hello {atom,world}", lists:flatten(Message5)),
{_Level, _Time6, Message6, Metadata6} = pop(),
{Level, _Time6, Message6, Metadata6} = pop(),
?assertMatch([{d, delta}, {g, gamma}|_], Metadata6),
?assertEqual("format {atom,world}", lists:flatten(Message6)),
ok
Expand All @@ -365,18 +365,18 @@ lager_test_() ->
lager:info(fun() -> get(attrs) end(), "hello ~p", get(args)),
lager:info([{d, delta}, {g, gamma}], get(format), get(args)),
?assertEqual(6, count()),
{_Level, _Time, Message, Metadata} = pop(),
{Level, _Time, Message, Metadata} = pop(),
?assertMatch([{a, alpha}, {b, beta}|_], Metadata),
?assertEqual("hello", lists:flatten(Message)),
{_Level, _Time2, Message2, _Metadata2} = pop(),
{Level, _Time2, Message2, _Metadata2} = pop(),
?assertEqual("hello world", lists:flatten(Message2)),
{_Level, _Time3, Message3, _Metadata3} = pop(),
{Level, _Time3, Message3, _Metadata3} = pop(),
?assertEqual("format world", lists:flatten(Message3)),
{_Level, _Time4, Message4, _Metadata4} = pop(),
{Level, _Time4, Message4, _Metadata4} = pop(),
?assertEqual("hello world", lists:flatten(Message4)),
{_Level, _Time5, Message5, _Metadata5} = pop(),
{Level, _Time5, Message5, _Metadata5} = pop(),
?assertEqual("hello world", lists:flatten(Message5)),
{_Level, _Time6, Message6, Metadata6} = pop(),
{Level, _Time6, Message6, Metadata6} = pop(),
?assertMatch([{d, delta}, {g, gamma}|_], Metadata6),
?assertEqual("format world", lists:flatten(Message6)),
ok
Expand All @@ -393,18 +393,18 @@ lager_test_() ->
lager:info(Test#test.attrs, "hello ~p", Test#test.args),
lager:info([{d, delta}, {g, gamma}], Test#test.format, Test#test.args),
?assertEqual(6, count()),
{_Level, _Time, Message, Metadata} = pop(),
{Level, _Time, Message, Metadata} = pop(),
?assertMatch([{a, alpha}, {b, beta}|_], Metadata),
?assertEqual("hello", lists:flatten(Message)),
{_Level, _Time2, Message2, _Metadata2} = pop(),
{Level, _Time2, Message2, _Metadata2} = pop(),
?assertEqual("hello world", lists:flatten(Message2)),
{_Level, _Time3, Message3, _Metadata3} = pop(),
{Level, _Time3, Message3, _Metadata3} = pop(),
?assertEqual("format world", lists:flatten(Message3)),
{_Level, _Time4, Message4, _Metadata4} = pop(),
{Level, _Time4, Message4, _Metadata4} = pop(),
?assertEqual("hello world", lists:flatten(Message4)),
{_Level, _Time5, Message5, _Metadata5} = pop(),
{Level, _Time5, Message5, _Metadata5} = pop(),
?assertEqual("hello world", lists:flatten(Message5)),
{_Level, _Time6, Message6, Metadata6} = pop(),
{Level, _Time6, Message6, Metadata6} = pop(),
?assertMatch([{d, delta}, {g, gamma}|_], Metadata6),
?assertEqual("format world", lists:flatten(Message6)),
ok
Expand Down Expand Up @@ -794,18 +794,18 @@ extra_sinks_test_() ->
?TEST_SINK_NAME:info(Attr, "hello ~p", Args),
?TEST_SINK_NAME:info([{d, delta}, {g, gamma}], Fmt, Args),
?assertEqual(6, count(?TEST_SINK_EVENT)),
{_Level, _Time, Message, Metadata} = pop(?TEST_SINK_EVENT),
{Level, _Time, Message, Metadata} = pop(?TEST_SINK_EVENT),
?assertMatch([{a, alpha}, {b, beta}|_], Metadata),
?assertEqual("hello", lists:flatten(Message)),
{_Level, _Time2, Message2, _Metadata2} = pop(?TEST_SINK_EVENT),
{Level, _Time2, Message2, _Metadata2} = pop(?TEST_SINK_EVENT),
?assertEqual("hello world", lists:flatten(Message2)),
{_Level, _Time3, Message3, _Metadata3} = pop(?TEST_SINK_EVENT),
{Level, _Time3, Message3, _Metadata3} = pop(?TEST_SINK_EVENT),
?assertEqual("format world", lists:flatten(Message3)),
{_Level, _Time4, Message4, _Metadata4} = pop(?TEST_SINK_EVENT),
{Level, _Time4, Message4, _Metadata4} = pop(?TEST_SINK_EVENT),
?assertEqual("hello world", lists:flatten(Message4)),
{_Level, _Time5, Message5, _Metadata5} = pop(?TEST_SINK_EVENT),
{Level, _Time5, Message5, _Metadata5} = pop(?TEST_SINK_EVENT),
?assertEqual("hello world", lists:flatten(Message5)),
{_Level, _Time6, Message6, Metadata6} = pop(?TEST_SINK_EVENT),
{Level, _Time6, Message6, Metadata6} = pop(?TEST_SINK_EVENT),
?assertMatch([{d, delta}, {g, gamma}|_], Metadata6),
?assertEqual("format world", lists:flatten(Message6)),
ok
Expand Down Expand Up @@ -912,6 +912,9 @@ crash(Type) ->
_ = gen_event:which_handlers(error_logger),
ok.

test_body({slice, Expected}, Actual) ->
SlicedActual = string:slice(Actual, 0, length(Expected)),
?assertEqual(Expected, SlicedActual, {Actual, sliced_to, SlicedActual, is_not_a_member_of, Expected});
test_body(Expected, Actual) ->
ExLen = length(Expected),
{Body, Rest} = case length(Actual) > ExLen of
Expand Down Expand Up @@ -1056,11 +1059,10 @@ crash_fsm_test_() ->
}
end,

TestBody("gen_fsm crash", crash_fsm, crash, [], "gen_fsm crash_fsm in state state1 terminated with reason: call to undefined function crash_fsm:state1/3 from gen_fsm:handle_msg/"),
TestBody("gen_statem crash", crash_statem, crash, [], "gen_statem crash_statem in state state1 terminated with reason: no function clause matching crash_statem:handle"),
TestBody("gen_statem stop", crash_statem, stop, [explode], "gen_statem crash_statem in state state1 terminated with reason: explode"),
TestBody("gen_statem timeout", crash_statem, timeout, [], "gen_statem crash_statem in state state1 terminated with reason: timeout")
],
TestBody("gen_statem crash", crash_statem, crash, [], {slice, "gen_statem crash_statem in state state1 terminated with reason"}),
TestBody("gen_statem stop", crash_statem, stop, [explode], {slice, "gen_statem crash_statem in state state1 terminated with reason"}),
TestBody("gen_statem timeout", crash_statem, timeout, [], {slice, "gen_statem crash_statem in state state1 terminated with reason"})
] ++ test_body_gen_fsm_crash(TestBody),

{"FSM crash output tests", [
{"Default sink",
Expand All @@ -1075,6 +1077,14 @@ crash_fsm_test_() ->
Tests}}
]}.

-if(?OTP_RELEASE < 23).
test_body_gen_fsm_crash(TestBody) ->
[TestBody("gen_fsm crash", crash_fsm, crash, [], "gen_fsm crash_fsm in state state1 terminated with reason: call to undefined function crash_fsm:state1/3 from gen_fsm:handle_msg/")].
-else.
test_body_gen_fsm_crash(_TestBody) ->
[].
-endif.

error_logger_redirect_crash_test_() ->
TestBody=fun(Name,CrashReason,Expected) ->
fun(Sink) ->
Expand Down
24 changes: 8 additions & 16 deletions test/pr_stacktrace_test.erl
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,6 @@

-compile([{parse_transform, lager_transform}]).

-ifdef(OTP_RELEASE). %% this implies 21 or higher
-define(EXCEPTION(Class, Reason, Stacktrace), Class:Reason:Stacktrace).
-define(GET_STACK(Stacktrace), Stacktrace).
-else.
-define(EXCEPTION(Class, Reason, _), Class:Reason).
-define(GET_STACK(_), erlang:get_stacktrace()).
-endif.

-include_lib("eunit/include/eunit.hrl").

make_throw() ->
Expand All @@ -25,8 +17,8 @@ pr_stacktrace_throw_test() ->
Got = try
make_throw()
catch
?EXCEPTION(Class, Reason, Stacktrace) ->
lager:pr_stacktrace(?GET_STACK(Stacktrace), {Class, Reason})
Class:Reason:Stacktrace ->
lager:pr_stacktrace(Stacktrace, {Class, Reason})
end,
Want = "pr_stacktrace_test:pr_stacktrace_throw_test/0 line 26\n pr_stacktrace_test:make_throw/0 line 16\nthrow:{test,exception}",
?assertNotEqual(nomatch, string:find(Got, Want)).
Expand All @@ -35,8 +27,8 @@ pr_stacktrace_bad_arg_test() ->
Got = try
bad_arg()
catch
?EXCEPTION(Class, Reason, Stacktrace) ->
lager:pr_stacktrace(?GET_STACK(Stacktrace), {Class, Reason})
Class:Reason:Stacktrace ->
lager:pr_stacktrace(Stacktrace, {Class, Reason})
end,
Want = "pr_stacktrace_test:pr_stacktrace_bad_arg_test/0 line 36\n pr_stacktrace_test:bad_arg/0 line 22\nerror:badarg",
?assertNotEqual(nomatch, string:find(Got, Want)).
Expand All @@ -45,8 +37,8 @@ pr_stacktrace_bad_arity_test() ->
Got = try
bad_arity()
catch
?EXCEPTION(Class, Reason, Stacktrace) ->
lager:pr_stacktrace(?GET_STACK(Stacktrace), {Class, Reason})
Class:Reason:Stacktrace ->
lager:pr_stacktrace(Stacktrace, {Class, Reason})
end,
Want = "pr_stacktrace_test:pr_stacktrace_bad_arity_test/0 line 46\n lists:concat([], [])\nerror:undef",
?assertNotEqual(nomatch, string:find(Got, Want)).
Expand All @@ -56,8 +48,8 @@ pr_stacktrace_no_reverse_test() ->
Got = try
bad_arity()
catch
?EXCEPTION(Class, Reason, Stacktrace) ->
lager:pr_stacktrace(?GET_STACK(Stacktrace), {Class, Reason})
Class:Reason:Stacktrace ->
lager:pr_stacktrace(Stacktrace, {Class, Reason})
end,
Want = "error:undef\n lists:concat([], [])\n pr_stacktrace_test:pr_stacktrace_bad_arity_test/0 line 57",
?assertEqual(nomatch, string:find(Got, Want)).

0 comments on commit d525470

Please sign in to comment.