25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
2.3 KiB

  1. %%% @doc Plugin handling test
  2. %%%
  3. %%% This test checks if plugins are loaded correctly.
  4. %%%
  5. %%% It has three applications:
  6. %%% <ol>
  7. %%% <li>fish. top-level module, has one dependency: `dependsonplugin'.</li>
  8. %%% <li>dependsonplugin. This depends on some pre-compile actions by the
  9. %%% plugin. In the test the plugin creates a file `pre.compile' in the
  10. %%% top-level folder of this application.</li>
  11. %%% <li>testplugin. This is a plugin application which creates the file.</li>
  12. %%% </ol>
  13. -module(depplugins_rt).
  14. -compile(export_all).
  15. -include_lib("eunit/include/eunit.hrl").
  16. files() ->
  17. [
  18. {copy, "../../rebar", "rebar"},
  19. {copy, "rebar.config", "rebar.config"},
  20. {copy, "base_dir_cwd_plugin.erl", "base_dir_cwd_plugin.erl"},
  21. {create, "ebin/fish.app", app(fish, [])},
  22. {copy, "rebar_dependsonplugin.config",
  23. "deps/dependsonplugin/rebar.config"},
  24. {create, "deps/dependsonplugin/ebin/dependsonplugin.app",
  25. app(dependsonplugin, [])},
  26. {copy, "rebar_testplugin.config", "deps/testplugin/rebar.config"},
  27. {copy, "testplugin_mod.erl",
  28. "deps/testplugin/plugins/testplugin_mod.erl"},
  29. {copy, "dep_cwd_plugin.erl", "deps/testplugin/dep_cwd_plugin.erl"},
  30. {create, "deps/testplugin/ebin/testplugin.app", app(testplugin, [])}
  31. ].
  32. run(_Dir) ->
  33. ?assertMatch({ok, _}, retest_sh:run("./rebar compile", [])),
  34. ?assertEqual(true, filelib:is_regular("base_dir_cwd_pre.compile")),
  35. ?assertEqual(true, filelib:is_regular(
  36. "deps/dependsonplugin/base_dir_cwd_pre.compile")),
  37. ?assertEqual(true, filelib:is_regular(
  38. "deps/dependsonplugin/plugin_pre.compile")),
  39. ?assertEqual(true, filelib:is_regular(
  40. "deps/testplugin/base_dir_cwd_pre.compile")),
  41. ?assertEqual(true, filelib:is_regular(
  42. "deps/testplugin/dep_cwd_pre.compile")),
  43. ?assertEqual(true, filelib:is_regular(
  44. "deps/testplugin/plugin_pre.compile")),
  45. ok.
  46. %%
  47. %% Generate the contents of a simple .app file
  48. %%
  49. app(Name, Modules) ->
  50. App = {application, Name,
  51. [{description, atom_to_list(Name)},
  52. {vsn, "1"},
  53. {modules, Modules},
  54. {registered, []},
  55. {applications, [kernel, stdlib]}]},
  56. io_lib:format("~p.\n", [App]).