summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralisdair sullivan <alisdairsullivan@yahoo.ca>2015-03-06 21:43:36 -0800
committeralisdair sullivan <alisdairsullivan@yahoo.ca>2015-03-06 21:43:36 -0800
commitba79fc082334574f4ff0f543615e041cbd1d6a17 (patch)
treec077fd6b057705d42a1f94ed4ed15ad278de69d9
parent11840e308341874c79bd860ba8bcd126e224ce49 (diff)
parse `rebar3 as foo, bar task` correctly
fixes #238
-rw-r--r--src/rebar_prv_as.erl20
-rw-r--r--test/rebar_as_SUITE.erl17
2 files changed, 28 insertions, 9 deletions
diff --git a/src/rebar_prv_as.erl b/src/rebar_prv_as.erl
index 7ac5465..beee00d 100644
--- a/src/rebar_prv_as.erl
+++ b/src/rebar_prv_as.erl
@@ -51,19 +51,23 @@ args_to_profiles_and_tasks(Args) ->
first_profile([]) -> {[], []};
first_profile([ProfileList|Rest]) ->
case re:split(ProfileList, ",", [{return, list}, {parts, 2}]) of
- %% profile terminated by comma
- [P, More] -> profiles([More] ++ Rest, [P]);
- %% profile not terminated by comma
- [P] -> comma_or_end(Rest, [P])
+ %% `foo, bar`
+ [P, ""] -> profiles(Rest, [P]);
+ %% `foo,bar`
+ [P, More] -> profiles([More] ++ Rest, [P]);
+ %% `foo`
+ [P] -> comma_or_end(Rest, [P])
end.
profiles([], Acc) -> {lists:reverse(Acc), rebar_utils:args_to_tasks([])};
profiles([ProfileList|Rest], Acc) ->
case re:split(ProfileList, ",", [{return, list}, {parts, 2}]) of
- %% profile terminated by comma
- [P, More] -> profiles([More] ++ Rest, [P|Acc]);
- %% profile not terminated by comma
- [P] -> comma_or_end(Rest, [P|Acc])
+ %% `foo, bar`
+ [P, ""] -> profiles(Rest, [P|Acc]);
+ %% `foo,bar`
+ [P, More] -> profiles([More] ++ Rest, [P|Acc]);
+ %% `foo`
+ [P] -> comma_or_end(Rest, [P|Acc])
end.
%% `, foo...`
diff --git a/test/rebar_as_SUITE.erl b/test/rebar_as_SUITE.erl
index ab70081..864d468 100644
--- a/test/rebar_as_SUITE.erl
+++ b/test/rebar_as_SUITE.erl
@@ -10,6 +10,7 @@
as_multiple_tasks/1,
as_multiple_profiles_multiple_tasks/1,
as_comma_placement/1,
+ as_comma_then_space/1,
as_dir_name/1]).
-include_lib("common_test/include/ct.hrl").
@@ -26,7 +27,8 @@ init_per_testcase(_, Config) ->
rebar_test_utils:init_rebar_state(Config, "as_").
all() -> [as_basic, as_multiple_profiles, as_multiple_tasks,
- as_multiple_profiles_multiple_tasks, as_comma_placement,
+ as_multiple_profiles_multiple_tasks,
+ as_comma_placement, as_comma_then_space,
as_dir_name].
as_basic(Config) ->
@@ -89,6 +91,19 @@ as_comma_placement(Config) ->
["as", "foo,bar", ",", "baz", ",qux", "compile"],
{ok, [{app, Name}]}).
+as_comma_then_space(Config) ->
+ AppDir = ?config(apps, Config),
+
+ Name = rebar_test_utils:create_random_name("as_comma_then_space_"),
+ Vsn = rebar_test_utils:create_random_vsn(),
+ rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
+
+ rebar_test_utils:run_and_check(Config,
+ [],
+ ["as", "foo,", "bar,", "baz", "compile"],
+ {ok, [{app, Name}]}).
+
+
as_dir_name(Config) ->
AppDir = ?config(apps, Config),