Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

77 řádky
2.1 KiB

  1. -module(pr_stacktrace_test).
  2. -compile([{parse_transform, lager_transform}]).
  3. -ifdef(OTP_RELEASE). %% this implies 21 or higher
  4. -define(EXCEPTION(Class, Reason, Stacktrace), Class:Reason:Stacktrace).
  5. -define(GET_STACK(Stacktrace), Stacktrace).
  6. -else.
  7. -define(EXCEPTION(Class, Reason, _), Class:Reason).
  8. -define(GET_STACK(_), erlang:get_stacktrace()).
  9. -endif.
  10. -include_lib("eunit/include/eunit.hrl").
  11. make_throw() ->
  12. throw({test, exception}).
  13. bad_arity() ->
  14. lists:concat([], []).
  15. bad_arg() ->
  16. integer_to_list(1.0).
  17. pr_stacktrace_throw_test() ->
  18. Result = try
  19. make_throw()
  20. catch
  21. ?EXCEPTION(Class, Reason, Stacktrace) ->
  22. lager:pr_stacktrace(?GET_STACK(Stacktrace), {Class, Reason})
  23. end,
  24. ExpectedPart = "
  25. pr_stacktrace_test:pr_stacktrace_throw_test/0 line 26
  26. pr_stacktrace_test:make_throw/0 line 16
  27. throw:{test,exception}",
  28. ?assertNotEqual(0, string:str(Result, ExpectedPart)).
  29. pr_stacktrace_bad_arg_test() ->
  30. Result = try
  31. bad_arg()
  32. catch
  33. ?EXCEPTION(Class, Reason, Stacktrace) ->
  34. lager:pr_stacktrace(?GET_STACK(Stacktrace), {Class, Reason})
  35. end,
  36. ExpectedPart = "
  37. pr_stacktrace_test:pr_stacktrace_bad_arg_test/0 line 40
  38. pr_stacktrace_test:bad_arg/0 line 22
  39. error:badarg",
  40. ?assertNotEqual(0, string:str(Result, ExpectedPart)).
  41. pr_stacktrace_bad_arity_test() ->
  42. Result = try
  43. bad_arity()
  44. catch
  45. ?EXCEPTION(Class, Reason, Stacktrace) ->
  46. lager:pr_stacktrace(?GET_STACK(Stacktrace), {Class, Reason})
  47. end,
  48. ExpectedPart = "
  49. pr_stacktrace_test:pr_stacktrace_bad_arity_test/0 line 54
  50. lists:concat([], [])
  51. error:undef",
  52. ?assertNotEqual(0, string:str(Result, ExpectedPart)).
  53. pr_stacktrace_no_reverse_test() ->
  54. application:set_env(lager, reverse_pretty_stacktrace, false),
  55. Result = try
  56. bad_arity()
  57. catch
  58. ?EXCEPTION(Class, Reason, Stacktrace) ->
  59. lager:pr_stacktrace(?GET_STACK(Stacktrace), {Class, Reason})
  60. end,
  61. ExpectedPart = "error:undef
  62. lists:concat([], [])
  63. pr_stacktrace_test:pr_stacktrace_bad_arity_test/0 line 68",
  64. ?assertEqual(0, string:str(Result, ExpectedPart)).