|
|
- -module(rebar_namespace_SUITE).
- -compile(export_all).
- -include_lib("common_test/include/ct.hrl").
- -include_lib("eunit/include/eunit.hrl").
-
- all() -> [implicit_compile, default_compile, do_compile,
- as_default_compile, as_do_compile,
- notfound, do_notfound, default_notfound, ns_notfound, ns_found,
- as_ns_invalid,
- do_ns_chain, do_ns_chain2, do_ns_noarg, do_ns_badcmd].
-
- init_per_testcase(Case, Config0) ->
- Config = rebar_test_utils:init_rebar_state(Config0),
- AppDir = ?config(apps, Config),
- Name = rebar_test_utils:create_random_name("app1_"++atom_to_list(Case)),
- Vsn = rebar_test_utils:create_random_vsn(),
- rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
- [{name, Name} | Config].
-
- end_per_testcase(_, Config) ->
- Config.
-
- implicit_compile(Config) ->
- Name = ?config(name, Config),
- rebar_test_utils:run_and_check(Config, [],
- ["compile"],
- {ok, [{app, Name}]}).
-
- default_compile(Config) ->
- Name = ?config(name, Config),
- rebar_test_utils:run_and_check(Config, [],
- ["default","compile"],
- {ok, [{app, Name}]}).
-
- do_compile(Config) ->
- Name = ?config(name, Config),
- rebar_test_utils:run_and_check(Config, [],
- ["do", "compile"],
- {ok, [{app, Name}]}).
-
- as_default_compile(Config) ->
- Name = ?config(name, Config),
- rebar_test_utils:run_and_check(Config, [],
- ["as", "prod", "default", "compile"],
- {ok, [{app, Name}]}).
-
- as_do_compile(Config) ->
- Name = ?config(name, Config),
- rebar_test_utils:run_and_check(Config, [],
- ["as", "prod", "do", "compile"],
- {ok, [{app, Name}]}).
-
- notfound(Config) ->
- Command = ["fakecommand"],
- rebar_test_utils:run_and_check(
- Config, [], Command,
- {error, io_lib:format("Command ~p not found", [fakecommand])}
- ).
-
- do_notfound(Config) ->
- Command = ["do", "fakecommand"],
- rebar_test_utils:run_and_check(
- Config, [], Command,
- {error, io_lib:format("Command ~p not found", [fakecommand])}
- ).
-
- default_notfound(Config) ->
- Command = ["default", "fakecommand"],
- rebar_test_utils:run_and_check(
- Config, [], Command,
- {error, io_lib:format("Command ~p not found", [fakecommand])}
- ).
-
- ns_notfound(Config) ->
- Command = ["ns", "fakecommand"],
- rebar_test_utils:run_and_check(
- add_fake_ns_provider(Config), [], Command,
- {error, io_lib:format("Command ~p not found in namespace ~p",
- [fakecommand, ns])}
- ).
-
- ns_found(Config) ->
- Command = ["ns", "fake_provider"],
- rebar_test_utils:run_and_check(
- add_fake_ns_provider(Config), [], Command,
- {ok, []}
- ).
-
- as_ns_invalid(Config) ->
- %% The as namespace is not valid
- Command = ["as", "profile", "as", "task"],
- rebar_test_utils:run_and_check(
- add_fake_ns_provider(Config), [], Command,
- {error, "Namespace 'as' is forbidden"}
- ).
-
- do_ns_chain(Config) ->
- %% `do` is also able to resolve namespaces on
- %% commands not found
- Command = ["do", "deps,", "ns", "fake_provider,", "deps"],
- rebar_test_utils:run_and_check(
- add_fake_ns_provider(Config), [], Command,
- {ok, []}
- ).
-
- do_ns_chain2(Config) ->
- %% `do` is also able to resolve namespaces on
- %% commands not found
- Command = ["do", "ns", "fake_provider,", "deps,", "ns", "fake_provider"],
- rebar_test_utils:run_and_check(
- add_fake_ns_provider(Config), [], Command,
- {ok, []}
- ).
-
- do_ns_noarg(Config) ->
- %% `do` is also able to resolve namespaces on
- %% commands not found
- Command = ["do", "ns"],
- rebar_test_utils:run_and_check(
- add_fake_ns_provider(Config), [], Command,
- {error, io_lib:format("Command ~p not found", [ns])}
- ).
-
- do_ns_badcmd(Config) ->
- %% `do` is also able to resolve namespaces on
- %% commands not found
- Command = ["do", "ns", "badcmd"],
- rebar_test_utils:run_and_check(
- add_fake_ns_provider(Config), [], Command,
- {error, io_lib:format("Command ~p not found in namespace ~p", [badcmd, ns])}
- ).
-
- %%% Helpers %%%
- add_fake_ns_provider(Config) ->
- State = ?config(state, Config),
- State1 = rebar_state:add_provider(
- State,
- providers:create(
- [{name, fake_provider},
- {module, ?MODULE},
- {namespace, ns},
- {deps, []},
- {opts, []}]
- )
- ),
- [{state, State1} | Config].
-
- %% callback for the test suite.
- do(State) -> {ok, State}.
|