Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

208 строки
8.0 KiB

  1. -module(rebar_cover_SUITE).
  2. -export([suite/0,
  3. init_per_suite/1,
  4. end_per_suite/1,
  5. init_per_testcase/2,
  6. all/0,
  7. flag_coverdata_written/1,
  8. config_coverdata_written/1,
  9. basic_extra_src_dirs/1,
  10. release_extra_src_dirs/1,
  11. root_extra_src_dirs/1,
  12. index_written/1,
  13. flag_verbose/1,
  14. config_verbose/1]).
  15. -include_lib("common_test/include/ct.hrl").
  16. -include_lib("eunit/include/eunit.hrl").
  17. -include_lib("kernel/include/file.hrl").
  18. suite() ->
  19. [].
  20. init_per_suite(Config) ->
  21. Config.
  22. end_per_suite(_Config) ->
  23. ok.
  24. init_per_testcase(_, Config) ->
  25. rebar_test_utils:init_rebar_state(Config, "cover_").
  26. all() ->
  27. [flag_coverdata_written, config_coverdata_written,
  28. basic_extra_src_dirs, release_extra_src_dirs,
  29. root_extra_src_dirs,
  30. index_written,
  31. flag_verbose, config_verbose].
  32. flag_coverdata_written(Config) ->
  33. AppDir = ?config(apps, Config),
  34. Name = rebar_test_utils:create_random_name("cover_"),
  35. Vsn = rebar_test_utils:create_random_vsn(),
  36. rebar_test_utils:create_eunit_app(AppDir, Name, Vsn, [kernel, stdlib]),
  37. RebarConfig = [{erl_opts, [{d, some_define}]}],
  38. rebar_test_utils:run_and_check(Config,
  39. RebarConfig,
  40. ["eunit", "--cover"],
  41. {ok, [{app, Name}]}),
  42. true = filelib:is_file(filename:join([AppDir, "_build", "test", "cover", "eunit.coverdata"])).
  43. config_coverdata_written(Config) ->
  44. AppDir = ?config(apps, Config),
  45. Name = rebar_test_utils:create_random_name("cover_"),
  46. Vsn = rebar_test_utils:create_random_vsn(),
  47. rebar_test_utils:create_eunit_app(AppDir, Name, Vsn, [kernel, stdlib]),
  48. RebarConfig = [{erl_opts, [{d, some_define}]}, {cover_enabled, true}],
  49. rebar_test_utils:run_and_check(Config,
  50. RebarConfig,
  51. ["eunit"],
  52. {ok, [{app, Name}]}),
  53. true = filelib:is_file(filename:join([AppDir, "_build", "test", "cover", "eunit.coverdata"])).
  54. basic_extra_src_dirs(Config) ->
  55. AppDir = ?config(apps, Config),
  56. Name = rebar_test_utils:create_random_name("cover_extra_"),
  57. Vsn = rebar_test_utils:create_random_vsn(),
  58. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  59. ExtraSrc = io_lib:format("-module(~ts_extra).\n-export([ok/0]).\nok() -> ok.\n", [Name]),
  60. ok = filelib:ensure_dir(filename:join([AppDir, "extra", "dummy"])),
  61. ok = file:write_file(filename:join([AppDir, "extra", io_lib:format("~ts_extra.erl", [Name])]),
  62. ExtraSrc),
  63. RebarConfig = [{erl_opts, [{d, some_define}]}, {extra_src_dirs, ["extra"]}],
  64. rebar_test_utils:run_and_check(Config,
  65. RebarConfig,
  66. ["eunit", "--cover"],
  67. {ok, [{app, Name}]}),
  68. Mod = list_to_atom(Name),
  69. {file, _} = cover:is_compiled(Mod),
  70. ExtraMod = list_to_atom(lists:flatten(io_lib:format("~ts_extra", [Name]))),
  71. false = cover:is_compiled(ExtraMod).
  72. release_extra_src_dirs(Config) ->
  73. AppDir = ?config(apps, Config),
  74. Name1 = rebar_test_utils:create_random_name("relapp1_"),
  75. Vsn1 = rebar_test_utils:create_random_vsn(),
  76. rebar_test_utils:create_app(filename:join([AppDir, "apps", Name1]), Name1, Vsn1, [kernel, stdlib]),
  77. Name2 = rebar_test_utils:create_random_name("relapp2_"),
  78. Vsn2 = rebar_test_utils:create_random_vsn(),
  79. rebar_test_utils:create_app(filename:join([AppDir, "apps", Name2]), Name2, Vsn2, [kernel, stdlib]),
  80. ExtraOne = io_lib:format("-module(~ts_extra).\n-export([ok/0]).\nok() -> ok.\n", [Name1]),
  81. ok = filelib:ensure_dir(filename:join([AppDir, "apps", Name1, "extra", "dummy"])),
  82. ok = file:write_file(filename:join([AppDir, "apps", Name1, "extra",
  83. io_lib:format("~ts_extra.erl", [Name1])]),
  84. ExtraOne),
  85. ExtraTwo = io_lib:format("-module(~ts_extra).\n-export([ok/0]).\nok() -> ok.\n", [Name2]),
  86. ok = filelib:ensure_dir(filename:join([AppDir, "apps", Name2, "extra", "dummy"])),
  87. ok = file:write_file(filename:join([AppDir, "apps", Name2, "extra",
  88. io_lib:format("~ts_extra.erl", [Name2])]),
  89. ExtraTwo),
  90. RebarConfig = [{erl_opts, [{d, some_define}]}, {extra_src_dirs, ["extra"]}],
  91. rebar_test_utils:run_and_check(Config,
  92. RebarConfig,
  93. ["eunit", "--cover"],
  94. {ok, [{app, Name1}, {app, Name2}]}),
  95. Mod1 = list_to_atom(Name1),
  96. {file, _} = cover:is_compiled(Mod1),
  97. Mod2 = list_to_atom(Name2),
  98. {file, _} = cover:is_compiled(Mod2),
  99. ExtraMod1 = list_to_atom(lists:flatten(io_lib:format("~ts_extra", [Name1]))),
  100. false = cover:is_compiled(ExtraMod1),
  101. ExtraMod2 = list_to_atom(lists:flatten(io_lib:format("~ts_extra", [Name2]))),
  102. false = cover:is_compiled(ExtraMod2).
  103. root_extra_src_dirs(Config) ->
  104. AppDir = ?config(apps, Config),
  105. Name1 = rebar_test_utils:create_random_name("relapp1_"),
  106. Vsn1 = rebar_test_utils:create_random_vsn(),
  107. rebar_test_utils:create_app(filename:join([AppDir, "apps", Name1]), Name1, Vsn1, [kernel, stdlib]),
  108. Name2 = rebar_test_utils:create_random_name("relapp2_"),
  109. Vsn2 = rebar_test_utils:create_random_vsn(),
  110. rebar_test_utils:create_app(filename:join([AppDir, "apps", Name2]), Name2, Vsn2, [kernel, stdlib]),
  111. Extra = <<"-module(extra).\n-export([ok/0]).\nok() -> ok.\n">>,
  112. ok = filelib:ensure_dir(filename:join([AppDir, "extra", "dummy"])),
  113. ok = file:write_file(filename:join([AppDir, "extra", "extra.erl"]), Extra),
  114. RebarConfig = [{erl_opts, [{d, some_define}]}, {extra_src_dirs, ["extra"]}],
  115. rebar_test_utils:run_and_check(Config,
  116. RebarConfig,
  117. ["eunit", "--cover"],
  118. {ok, [{app, Name1}, {app, Name2}]}),
  119. Mod1 = list_to_atom(Name1),
  120. {file, _} = cover:is_compiled(Mod1),
  121. Mod2 = list_to_atom(Name2),
  122. {file, _} = cover:is_compiled(Mod2),
  123. false = cover:is_compiled(extra).
  124. index_written(Config) ->
  125. AppDir = ?config(apps, Config),
  126. Name = rebar_test_utils:create_random_name("cover_"),
  127. Vsn = rebar_test_utils:create_random_vsn(),
  128. rebar_test_utils:create_eunit_app(AppDir, Name, Vsn, [kernel, stdlib]),
  129. RebarConfig = [{erl_opts, [{d, some_define}]}],
  130. rebar_test_utils:run_and_check(Config,
  131. RebarConfig,
  132. ["do", "eunit", "--cover", ",", "cover"],
  133. {ok, [{app, Name}]}),
  134. true = filelib:is_file(filename:join([AppDir, "_build", "test", "cover", "index.html"])).
  135. flag_verbose(Config) ->
  136. AppDir = ?config(apps, Config),
  137. Name = rebar_test_utils:create_random_name("cover_"),
  138. Vsn = rebar_test_utils:create_random_vsn(),
  139. rebar_test_utils:create_eunit_app(AppDir, Name, Vsn, [kernel, stdlib]),
  140. RebarConfig = [{erl_opts, [{d, some_define}]}],
  141. rebar_test_utils:run_and_check(Config,
  142. RebarConfig,
  143. ["do", "eunit", "--cover", ",", "cover", "--verbose"],
  144. {ok, [{app, Name}]}),
  145. true = filelib:is_file(filename:join([AppDir, "_build", "test", "cover", "index.html"])).
  146. config_verbose(Config) ->
  147. AppDir = ?config(apps, Config),
  148. Name = rebar_test_utils:create_random_name("cover_"),
  149. Vsn = rebar_test_utils:create_random_vsn(),
  150. rebar_test_utils:create_eunit_app(AppDir, Name, Vsn, [kernel, stdlib]),
  151. RebarConfig = [{erl_opts, [{d, some_define}]}, {cover_opts, [verbose]}],
  152. rebar_test_utils:run_and_check(Config,
  153. RebarConfig,
  154. ["do", "eunit", "--cover", ",", "cover"],
  155. {ok, [{app, Name}]}),
  156. true = filelib:is_file(filename:join([AppDir, "_build", "test", "cover", "index.html"])).