diff options
author | alisdair sullivan <alisdairsullivan@yahoo.ca> | 2015-03-06 21:43:36 -0800 |
---|---|---|
committer | alisdair sullivan <alisdairsullivan@yahoo.ca> | 2015-03-06 21:43:36 -0800 |
commit | ba79fc082334574f4ff0f543615e041cbd1d6a17 (patch) | |
tree | c077fd6b057705d42a1f94ed4ed15ad278de69d9 | |
parent | 11840e308341874c79bd860ba8bcd126e224ce49 (diff) |
parse `rebar3 as foo, bar task` correctly
fixes #238
-rw-r--r-- | src/rebar_prv_as.erl | 20 | ||||
-rw-r--r-- | test/rebar_as_SUITE.erl | 17 |
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), |