25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

136 satır
5.5 KiB

  1. -module(rebar_release_SUITE).
  2. -compile(export_all).
  3. -include_lib("common_test/include/ct.hrl").
  4. -include_lib("eunit/include/eunit.hrl").
  5. all() -> [release,
  6. dev_mode_release,
  7. profile_dev_mode_override_release,
  8. tar,
  9. extend_release,
  10. user_output_dir].
  11. init_per_testcase(Case, Config0) ->
  12. Config = rebar_test_utils:init_rebar_state(Config0),
  13. Name = rebar_test_utils:create_random_name(atom_to_list(Case)),
  14. AppDir = ?config(apps, Config),
  15. application:load(rebar),
  16. ok = ec_file:mkdir_p(AppDir),
  17. State = rebar_state:new([{base_dir, filename:join([AppDir, "_build"])}]),
  18. rebar_test_utils:create_app(AppDir, Name, "1.0.0", [kernel, stdlib]),
  19. [{name, Name}, {apps, AppDir}, {state, State} | Config].
  20. end_per_testcase(_, Config) ->
  21. meck:unload(),
  22. Config.
  23. release(Config) ->
  24. AppDir = ?config(apps, Config),
  25. Name = ?config(name, Config),
  26. Vsn = "1.0.0",
  27. {ok, RebarConfig} =
  28. file:consult(rebar_test_utils:create_config(AppDir,
  29. [{relx, [{release, {list_to_atom(Name), Vsn},
  30. [list_to_atom(Name)]},
  31. {lib_dirs, [AppDir]}]}])),
  32. rebar_test_utils:run_and_check(
  33. Config, RebarConfig,
  34. ["release"],
  35. {ok, [{release, list_to_atom(Name), Vsn, false}]}
  36. ).
  37. dev_mode_release(Config) ->
  38. AppDir = ?config(apps, Config),
  39. Name = ?config(name, Config),
  40. Vsn = "1.0.0",
  41. {ok, RebarConfig} =
  42. file:consult(rebar_test_utils:create_config(AppDir,
  43. [{relx, [{release, {list_to_atom(Name), Vsn},
  44. [list_to_atom(Name)]},
  45. {lib_dirs, [AppDir]},
  46. {dev_mode, true}]}])),
  47. rebar_test_utils:run_and_check(
  48. Config, RebarConfig,
  49. ["release"],
  50. {ok, [{release, list_to_atom(Name), Vsn, true}]}
  51. ).
  52. profile_dev_mode_override_release(Config) ->
  53. AppDir = ?config(apps, Config),
  54. Name = ?config(name, Config),
  55. Vsn = "1.0.0",
  56. {ok, RebarConfig} =
  57. file:consult(rebar_test_utils:create_config(AppDir,
  58. [{relx, [{release, {list_to_atom(Name), Vsn},
  59. [list_to_atom(Name)]},
  60. {lib_dirs, [AppDir]},
  61. {dev_mode, true}]},
  62. {profiles,
  63. [{ct,
  64. [{relx, [{dev_mode, false}]}]}]}])),
  65. rebar_test_utils:run_and_check(
  66. Config, RebarConfig,
  67. ["as", "ct", "release"],
  68. {ok, [{release, list_to_atom(Name), Vsn, false}]}
  69. ).
  70. tar(Config) ->
  71. AppDir = ?config(apps, Config),
  72. Name = ?config(name, Config),
  73. Vsn = "1.0.0",
  74. {ok, RebarConfig} =
  75. file:consult(rebar_test_utils:create_config(AppDir,
  76. [{relx, [{release, {list_to_atom(Name), Vsn},
  77. [list_to_atom(Name)]},
  78. {lib_dirs, [AppDir]}]}])),
  79. rebar_test_utils:run_and_check(
  80. Config, RebarConfig,
  81. ["tar"],
  82. {ok, [{release, list_to_atom(Name), Vsn, false}, {tar, Name, Vsn}]}
  83. ).
  84. %% Test that the order of release config args is not lost. If it is extend would fail.
  85. extend_release(Config) ->
  86. AppDir = ?config(apps, Config),
  87. Name = ?config(name, Config),
  88. Vsn = "1.0.0",
  89. {ok, RebarConfig} =
  90. file:consult(rebar_test_utils:create_config(AppDir,
  91. [{relx, [{release, {list_to_atom(Name), Vsn},
  92. [list_to_atom(Name)]},
  93. {release, {extended, Vsn, {extend, list_to_atom(Name)}},
  94. []},
  95. {lib_dirs, [AppDir]}]}])),
  96. rebar_test_utils:run_and_check(
  97. Config, RebarConfig,
  98. ["release", "-n", "extended"],
  99. {ok, [{release, extended, Vsn, false}]}
  100. ).
  101. user_output_dir(Config) ->
  102. AppDir = ?config(apps, Config),
  103. Name = ?config(name, Config),
  104. ReleaseDir = filename:join(AppDir, "./_rel"),
  105. Vsn = "1.0.0",
  106. {ok, RebarConfig} =
  107. file:consult(rebar_test_utils:create_config(AppDir,
  108. [{relx, [{release, {list_to_atom(Name), Vsn},
  109. [list_to_atom(Name)]},
  110. {lib_dirs, [AppDir]},
  111. {dev_mode, true}]}])),
  112. rebar_test_utils:run_and_check(
  113. Config, RebarConfig,
  114. ["release", "-o", ReleaseDir],
  115. {ok, []}
  116. ),
  117. RelxState = rlx_state:new("", [], []),
  118. RelxState1 = rlx_state:base_output_dir(RelxState, ReleaseDir),
  119. {ok, RelxState2} = rlx_prv_app_discover:do(RelxState1),
  120. {ok, RelxState3} = rlx_prv_rel_discover:do(RelxState2),
  121. rlx_state:get_realized_release(RelxState3, list_to_atom(Name), Vsn).