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.

133 lines
5.4 KiB

  1. -module(rebar_utils_SUITE).
  2. -export([all/0,
  3. groups/0,
  4. init_per_group/2,
  5. end_per_group/2,
  6. empty_arglist/1,
  7. single_task/1,
  8. single_task_with_immediate_comma/1,
  9. single_task_with_trailing_comma/1,
  10. multiple_task/1,
  11. multiple_task_no_spaces/1,
  12. multiple_task_with_immediate_comma/1,
  13. multiple_task_with_trailing_comma/1,
  14. task_with_arg/1,
  15. task_with_arg_with_immediate_comma/1,
  16. task_with_arg_with_trailing_comma/1,
  17. task_with_multiple_args/1,
  18. task_with_flag/1,
  19. task_with_flag_with_immediate_comma/1,
  20. task_with_flag_with_trailing_comma/1,
  21. task_with_flag_with_commas/1,
  22. task_with_multiple_flags/1,
  23. special_task_do/1,
  24. sh_does_not_miss_messages/1]).
  25. -include_lib("common_test/include/ct.hrl").
  26. -include_lib("eunit/include/eunit.hrl").
  27. -include_lib("kernel/include/file.hrl").
  28. all() ->
  29. [{group, args_to_tasks},
  30. sh_does_not_miss_messages].
  31. groups() ->
  32. [{args_to_tasks, [], [empty_arglist,
  33. single_task,
  34. single_task_with_immediate_comma,
  35. single_task_with_trailing_comma,
  36. multiple_task,
  37. multiple_task_no_spaces,
  38. multiple_task_with_immediate_comma,
  39. multiple_task_with_trailing_comma,
  40. task_with_arg,
  41. task_with_arg_with_immediate_comma,
  42. task_with_arg_with_trailing_comma,
  43. task_with_multiple_args,
  44. task_with_flag,
  45. task_with_flag_with_immediate_comma,
  46. task_with_flag_with_trailing_comma,
  47. task_with_flag_with_commas,
  48. task_with_multiple_flags,
  49. special_task_do]}].
  50. init_per_group(_, Config) -> Config.
  51. end_per_group(_, Config) -> Config.
  52. empty_arglist(_Config) ->
  53. [] = rebar_utils:args_to_tasks([]).
  54. single_task(_Config) ->
  55. [{"foo", []}] = rebar_utils:args_to_tasks(["foo"]).
  56. single_task_with_immediate_comma(_Config) ->
  57. [{"foo", []}] = rebar_utils:args_to_tasks(["foo,"]).
  58. single_task_with_trailing_comma(_Config) ->
  59. [{"foo", []}] = rebar_utils:args_to_tasks(["foo", ","]).
  60. multiple_task(_Config) ->
  61. [{"foo", []}, {"bar", []}, {"baz", []}] = rebar_utils:args_to_tasks(["foo,",
  62. "bar,",
  63. "baz"]).
  64. multiple_task_no_spaces(_Config) ->
  65. [{"foo", []}, {"bar", []}, {"baz", []}] = rebar_utils:args_to_tasks(["foo,bar,baz"]).
  66. multiple_task_with_immediate_comma(_Config) ->
  67. [{"foo", []}, {"bar", []}, {"baz", []}] = rebar_utils:args_to_tasks(["foo,",
  68. "bar,",
  69. "baz,"]).
  70. multiple_task_with_trailing_comma(_Config) ->
  71. [{"foo", []}, {"bar", []}, {"baz", []}] = rebar_utils:args_to_tasks(["foo",
  72. ",",
  73. "bar",
  74. ",",
  75. "baz",
  76. ","]).
  77. task_with_arg(_Config) ->
  78. [{"foo", ["bar"]}] = rebar_utils:args_to_tasks(["foo", "bar"]).
  79. task_with_arg_with_immediate_comma(_Config) ->
  80. [{"foo", ["bar"]}, {"baz", []}] = rebar_utils:args_to_tasks(["foo", "bar,", "baz"]).
  81. task_with_arg_with_trailing_comma(_Config) ->
  82. [{"foo", ["bar"]}, {"baz", []}] = rebar_utils:args_to_tasks(["foo", "bar", ",", "baz"]).
  83. task_with_multiple_args(_Config) ->
  84. [{"foo", ["bar", "baz"]}] = rebar_utils:args_to_tasks(["foo", "bar", "baz"]).
  85. task_with_flag(_Config) ->
  86. [{"foo", ["--bar"]}] = rebar_utils:args_to_tasks(["foo", "--bar"]).
  87. task_with_flag_with_immediate_comma(_Config) ->
  88. [{"foo", ["--bar"]}, {"baz", []}] = rebar_utils:args_to_tasks(["foo", "--bar,", "baz"]).
  89. task_with_flag_with_trailing_comma(_Config) ->
  90. [{"foo", ["--bar"]}, {"baz", []}] = rebar_utils:args_to_tasks(["foo", "--bar", ",", "baz"]).
  91. task_with_flag_with_commas(_Config) ->
  92. [{"foo", ["--bar=baz,qux"]}] = rebar_utils:args_to_tasks(["foo", "--bar=baz,qux"]).
  93. task_with_multiple_flags(_Config) ->
  94. [{"foo", ["--bar", "--baz"]}] = rebar_utils:args_to_tasks(["foo", "--bar", "--baz"]).
  95. special_task_do(_Config) ->
  96. [{"foo", []}, {"do", ["bar,", "baz"]}] = rebar_utils:args_to_tasks(["foo,",
  97. "do",
  98. "bar,",
  99. "baz"]).
  100. sh_does_not_miss_messages(_Config) ->
  101. Source = "~nmain(_) ->~n io:format(\"donotmissme\").~n",
  102. file:write_file("do_not_miss_messages", io_lib:format(Source,[])),
  103. {ok, "donotmissme"} = rebar_utils:sh("escript do_not_miss_messages", []),
  104. AnyMessageRemained =
  105. receive
  106. What -> What
  107. after 100 ->
  108. false
  109. end,
  110. AnyMessageRemained = false.