No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

201 líneas
7.1 KiB

  1. -module(rebar_as_SUITE).
  2. -export([suite/0,
  3. init_per_suite/1,
  4. end_per_suite/1,
  5. init_per_testcase/2,
  6. all/0,
  7. as_basic/1,
  8. as_multiple_profiles/1,
  9. as_multiple_tasks/1,
  10. as_multiple_profiles_multiple_tasks/1,
  11. as_comma_placement/1,
  12. as_comma_then_space/1,
  13. as_dir_name/1,
  14. as_with_task_args/1,
  15. warn_on_empty_profile/1,
  16. error_on_empty_tasks/1,
  17. clean_as_profile/1]).
  18. -include_lib("common_test/include/ct.hrl").
  19. -include_lib("eunit/include/eunit.hrl").
  20. -include_lib("kernel/include/file.hrl").
  21. suite() -> [].
  22. init_per_suite(Config) -> Config.
  23. end_per_suite(_Config) -> ok.
  24. init_per_testcase(_, Config) ->
  25. rebar_test_utils:init_rebar_state(Config, "as_").
  26. all() -> [as_basic, as_multiple_profiles, as_multiple_tasks,
  27. as_multiple_profiles_multiple_tasks,
  28. as_comma_placement, as_comma_then_space,
  29. as_dir_name, as_with_task_args,
  30. warn_on_empty_profile, error_on_empty_tasks, clean_as_profile].
  31. as_basic(Config) ->
  32. AppDir = ?config(apps, Config),
  33. Name = rebar_test_utils:create_random_name("as_basic_"),
  34. Vsn = rebar_test_utils:create_random_vsn(),
  35. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  36. rebar_test_utils:run_and_check(Config,
  37. [],
  38. ["as", "default", "compile"],
  39. {ok, [{app, Name}]}).
  40. as_multiple_profiles(Config) ->
  41. AppDir = ?config(apps, Config),
  42. Name = rebar_test_utils:create_random_name("as_multiple_profiles_"),
  43. Vsn = rebar_test_utils:create_random_vsn(),
  44. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  45. rebar_test_utils:run_and_check(Config,
  46. [],
  47. ["as", "foo", ",", "bar", "compile"],
  48. {ok, [{app, Name}]}).
  49. as_multiple_tasks(Config) ->
  50. AppDir = ?config(apps, Config),
  51. Name = rebar_test_utils:create_random_name("as_multiple_tasks_"),
  52. Vsn = rebar_test_utils:create_random_vsn(),
  53. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  54. rebar_test_utils:run_and_check(Config,
  55. [],
  56. ["as", "foo", "clean", ",", "compile"],
  57. {ok, [{app, Name}]}).
  58. as_multiple_profiles_multiple_tasks(Config) ->
  59. AppDir = ?config(apps, Config),
  60. Name = rebar_test_utils:create_random_name("as_multiple_profiles_multiple_tasks_"),
  61. Vsn = rebar_test_utils:create_random_vsn(),
  62. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  63. rebar_test_utils:run_and_check(Config,
  64. [],
  65. ["as", "foo", ",", "bar", "clean", ",", "compile"],
  66. {ok, [{app, Name}]}).
  67. as_comma_placement(Config) ->
  68. AppDir = ?config(apps, Config),
  69. Name = rebar_test_utils:create_random_name("as_comma_placement_"),
  70. Vsn = rebar_test_utils:create_random_vsn(),
  71. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  72. rebar_test_utils:run_and_check(Config,
  73. [],
  74. ["as", "foo,bar", ",", "baz", ",qux", "compile"],
  75. {ok, [{app, Name}]}).
  76. as_comma_then_space(Config) ->
  77. AppDir = ?config(apps, Config),
  78. Name = rebar_test_utils:create_random_name("as_comma_then_space_"),
  79. Vsn = rebar_test_utils:create_random_vsn(),
  80. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  81. rebar_test_utils:run_and_check(Config,
  82. [],
  83. ["as", "foo,", "bar,", "baz", "compile"],
  84. {ok, [{app, Name}]}).
  85. as_dir_name(Config) ->
  86. AppDir = ?config(apps, Config),
  87. Name = rebar_test_utils:create_random_name("as_dir_name_"),
  88. Vsn = rebar_test_utils:create_random_vsn(),
  89. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  90. rebar_test_utils:run_and_check(Config,
  91. [],
  92. ["as", "foo,bar,baz", "compile"],
  93. {ok, [{app, Name}]}),
  94. true = filelib:is_dir(filename:join([AppDir, "_build", "foo+bar+baz"])).
  95. as_with_task_args(Config) ->
  96. AppDir = ?config(apps, Config),
  97. Name = rebar_test_utils:create_random_name("as_with_task_args_"),
  98. Vsn = rebar_test_utils:create_random_vsn(),
  99. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  100. rebar_test_utils:run_and_check(Config,
  101. [],
  102. ["as", "default", "compile"],
  103. {ok, [{app, Name}]}),
  104. rebar_test_utils:run_and_check(Config,
  105. [],
  106. ["as", "default", "clean", "-a"],
  107. {ok, [{app, Name, invalid}]}).
  108. warn_on_empty_profile(Config) ->
  109. AppDir = ?config(apps, Config),
  110. Name = rebar_test_utils:create_random_name("as_warn_empty_"),
  111. Vsn = rebar_test_utils:create_random_vsn(),
  112. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  113. meck:new(rebar_log, [passthrough]),
  114. rebar_test_utils:run_and_check(Config,
  115. [],
  116. ["as", "fake1,fake2", "compile"],
  117. {ok, [{app, Name}]}),
  118. History = meck:history(rebar_log),
  119. ?assert(warn_match("fake1", History)),
  120. ?assert(warn_match("fake2", History)),
  121. meck:unload(rebar_log),
  122. ok.
  123. error_on_empty_tasks(Config) ->
  124. AppDir = ?config(apps, Config),
  125. Name = rebar_test_utils:create_random_name("as_error_empty_"),
  126. Vsn = rebar_test_utils:create_random_vsn(),
  127. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  128. meck:new(rebar_log, [passthrough]),
  129. rebar_test_utils:run_and_check(Config,
  130. [],
  131. ["as", "default"],
  132. {error, "At least one task must be specified when using `as`"}),
  133. ok.
  134. warn_match(App, History) ->
  135. lists:any(
  136. fun({_, {rebar_log,log, [warn, "No entry for profile ~ts in config.",
  137. [ArgApp]]}, _}) -> ArgApp =:= App
  138. ; (_) ->
  139. false
  140. end,
  141. History).
  142. clean_as_profile(Config) ->
  143. AppDir = ?config(apps, Config),
  144. Name = rebar_test_utils:create_random_name("clean_as_profile_"),
  145. Vsn = rebar_test_utils:create_random_vsn(),
  146. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  147. rebar_test_utils:run_and_check(Config,
  148. [],
  149. ["as", "foo", "compile"],
  150. {ok, [{app, Name, valid}]}),
  151. rebar_test_utils:run_and_check(Config,
  152. [],
  153. ["clean", "-a", "-p", "foo"],
  154. {ok, [{app, Name, invalid}]}).