Bläddra i källkod

Merge pull request #292 from talentdeficit/get_opt_fix

handle additional errors returned from `getopt:parse/2`
pull/285/merge
Fred Hebert 10 år sedan
förälder
incheckning
63fb911303
2 ändrade filer med 59 tillägg och 1 borttagningar
  1. +5
    -1
      src/rebar_core.erl
  2. +54
    -0
      test/rebar_opts_parser_SUITE.erl

+ 5
- 1
src/rebar_core.erl Visa fil

@ -93,7 +93,11 @@ process_command(State, Command) ->
State2 = rebar_state:command_parsed_args(State1, Args),
do(TargetProviders, State2);
{error, {invalid_option, Option}} ->
{error, io_lib:format("Invalid option ~s on task ~p", [Option, Command])}
{error, io_lib:format("Invalid option ~s on task ~p", [Option, Command])};
{error, {invalid_option_arg, {Option, Arg}}} ->
{error, io_lib:format("Invalid argument ~s to option ~s", [Arg, Option])};
{error, {missing_option_arg, Option}} ->
{error, io_lib:format("Missing argument to option ~s", [Option])}
end
end
end.

+ 54
- 0
test/rebar_opts_parser_SUITE.erl Visa fil

@ -0,0 +1,54 @@
-module(rebar_opts_parser_SUITE).
-export([all/0, init_per_testcase/2]).
-export([bad_arg_to_flag/1, missing_arg_to_flag/1]).
-include_lib("common_test/include/ct.hrl").
all() -> [bad_arg_to_flag, missing_arg_to_flag].
init_per_testcase(_, Config) ->
rebar_test_utils:init_rebar_state(Config, "opts_parser_").
bad_arg_to_flag(Config) ->
ok = meck:new(getopt),
ok = meck:expect(getopt,
parse,
fun(_, _) -> {error, {invalid_option_arg, {foo, "null"}}} end),
AppDir = ?config(apps, Config),
Name = rebar_test_utils:create_random_name("bad_arg_"),
Vsn = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
{error, Error} = rebar_test_utils:run_and_check(Config,
[],
["compile", "--foo=null"],
return),
true = meck:validate(getopt),
ok = meck:unload(getopt),
"Invalid argument null to option foo" = lists:flatten(Error).
missing_arg_to_flag(Config) ->
ok = meck:new(getopt),
ok = meck:expect(getopt, parse, fun(_, _) -> {error, {missing_option_arg, foo}} end),
AppDir = ?config(apps, Config),
Name = rebar_test_utils:create_random_name("missing_arg_"),
Vsn = rebar_test_utils:create_random_vsn(),
rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
{error, Error} = rebar_test_utils:run_and_check(Config,
[],
["compile", "--foo"],
return),
true = meck:validate(getopt),
ok = meck:unload(getopt),
"Missing argument to option foo" = lists:flatten(Error).

Laddar…
Avbryt
Spara