You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 regels
5.8 KiB

9 jaren geleden
9 jaren geleden
9 jaren geleden
  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. -include_lib("common_test/include/ct.hrl").
  17. -include_lib("eunit/include/eunit.hrl").
  18. -include_lib("kernel/include/file.hrl").
  19. suite() -> [].
  20. init_per_suite(Config) -> Config.
  21. end_per_suite(_Config) -> ok.
  22. init_per_testcase(_, Config) ->
  23. rebar_test_utils:init_rebar_state(Config, "as_").
  24. all() -> [as_basic, as_multiple_profiles, as_multiple_tasks,
  25. as_multiple_profiles_multiple_tasks,
  26. as_comma_placement, as_comma_then_space,
  27. as_dir_name, as_with_task_args,
  28. warn_on_empty_profile].
  29. as_basic(Config) ->
  30. AppDir = ?config(apps, Config),
  31. Name = rebar_test_utils:create_random_name("as_basic_"),
  32. Vsn = rebar_test_utils:create_random_vsn(),
  33. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  34. rebar_test_utils:run_and_check(Config,
  35. [],
  36. ["as", "default", "compile"],
  37. {ok, [{app, Name}]}).
  38. as_multiple_profiles(Config) ->
  39. AppDir = ?config(apps, Config),
  40. Name = rebar_test_utils:create_random_name("as_multiple_profiles_"),
  41. Vsn = rebar_test_utils:create_random_vsn(),
  42. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  43. rebar_test_utils:run_and_check(Config,
  44. [],
  45. ["as", "foo", ",", "bar", "compile"],
  46. {ok, [{app, Name}]}).
  47. as_multiple_tasks(Config) ->
  48. AppDir = ?config(apps, Config),
  49. Name = rebar_test_utils:create_random_name("as_multiple_tasks_"),
  50. Vsn = rebar_test_utils:create_random_vsn(),
  51. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  52. rebar_test_utils:run_and_check(Config,
  53. [],
  54. ["as", "foo", "clean", ",", "compile"],
  55. {ok, [{app, Name}]}).
  56. as_multiple_profiles_multiple_tasks(Config) ->
  57. AppDir = ?config(apps, Config),
  58. Name = rebar_test_utils:create_random_name("as_multiple_profiles_multiple_tasks_"),
  59. Vsn = rebar_test_utils:create_random_vsn(),
  60. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  61. rebar_test_utils:run_and_check(Config,
  62. [],
  63. ["as", "foo", ",", "bar", "clean", ",", "compile"],
  64. {ok, [{app, Name}]}).
  65. as_comma_placement(Config) ->
  66. AppDir = ?config(apps, Config),
  67. Name = rebar_test_utils:create_random_name("as_comma_placement_"),
  68. Vsn = rebar_test_utils:create_random_vsn(),
  69. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  70. rebar_test_utils:run_and_check(Config,
  71. [],
  72. ["as", "foo,bar", ",", "baz", ",qux", "compile"],
  73. {ok, [{app, Name}]}).
  74. as_comma_then_space(Config) ->
  75. AppDir = ?config(apps, Config),
  76. Name = rebar_test_utils:create_random_name("as_comma_then_space_"),
  77. Vsn = rebar_test_utils:create_random_vsn(),
  78. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  79. rebar_test_utils:run_and_check(Config,
  80. [],
  81. ["as", "foo,", "bar,", "baz", "compile"],
  82. {ok, [{app, Name}]}).
  83. as_dir_name(Config) ->
  84. AppDir = ?config(apps, Config),
  85. Name = rebar_test_utils:create_random_name("as_dir_name_"),
  86. Vsn = rebar_test_utils:create_random_vsn(),
  87. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  88. rebar_test_utils:run_and_check(Config,
  89. [],
  90. ["as", "foo,bar,baz", "compile"],
  91. {ok, [{app, Name}]}),
  92. true = filelib:is_dir(filename:join([AppDir, "_build", "foo+bar+baz"])).
  93. as_with_task_args(Config) ->
  94. AppDir = ?config(apps, Config),
  95. Name = rebar_test_utils:create_random_name("as_with_task_args_"),
  96. Vsn = rebar_test_utils:create_random_vsn(),
  97. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  98. rebar_test_utils:run_and_check(Config,
  99. [],
  100. ["as", "default", "compile"],
  101. {ok, [{app, Name}]}),
  102. rebar_test_utils:run_and_check(Config,
  103. [],
  104. ["as", "default", "clean", "-a"],
  105. {ok, [{app, Name, invalid}]}).
  106. warn_on_empty_profile(Config) ->
  107. AppDir = ?config(apps, Config),
  108. Name = rebar_test_utils:create_random_name("as_warn_empty_"),
  109. Vsn = rebar_test_utils:create_random_vsn(),
  110. rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
  111. meck:new(rebar_log, [passthrough]),
  112. rebar_test_utils:run_and_check(Config,
  113. [],
  114. ["as", "fake1,fake2", "compile"],
  115. {ok, [{app, Name}]}),
  116. History = meck:history(rebar_log),
  117. ?assert(warn_match("fake1", History)),
  118. ?assert(warn_match("fake2", History)),
  119. meck:unload(rebar_log),
  120. ok.
  121. warn_match(App, History) ->
  122. lists:any(
  123. fun({_, {rebar_log,log, [warn, "No entry for profile ~s in config.",
  124. [ArgApp]]}, _}) -> ArgApp =:= App
  125. ; (_) ->
  126. false
  127. end,
  128. History).