summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_dir.erl7
-rw-r--r--test/rebar_as_SUITE.erl20
2 files changed, 24 insertions, 3 deletions
diff --git a/src/rebar_dir.erl b/src/rebar_dir.erl
index fd80fa7..628ebd3 100644
--- a/src/rebar_dir.erl
+++ b/src/rebar_dir.erl
@@ -23,7 +23,12 @@
-spec base_dir(rebar_state:t()) -> file:filename_all().
base_dir(State) ->
Profiles = rebar_state:current_profiles(State),
- ProfilesStrings = [ec_cnv:to_list(P) || P <- Profiles],
+ ProfilesStrings = case [ec_cnv:to_list(P) || P <- Profiles] of
+ ["default"] -> ["default"];
+ %% drop `default` from the profile dir if it's implicit and reverse order
+ %% of profiles to match order passed to `as`
+ ["default"|Rest] -> lists:reverse(Rest)
+ end,
ProfilesDir = string:join(ProfilesStrings, "+"),
filename:join(rebar_state:get(State, base_dir, ?DEFAULT_BASE_DIR), ProfilesDir).
diff --git a/test/rebar_as_SUITE.erl b/test/rebar_as_SUITE.erl
index 2951f53..ab70081 100644
--- a/test/rebar_as_SUITE.erl
+++ b/test/rebar_as_SUITE.erl
@@ -9,7 +9,8 @@
as_multiple_profiles/1,
as_multiple_tasks/1,
as_multiple_profiles_multiple_tasks/1,
- as_comma_placement/1]).
+ as_comma_placement/1,
+ as_dir_name/1]).
-include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl").
@@ -25,7 +26,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_dir_name].
as_basic(Config) ->
AppDir = ?config(apps, Config),
@@ -87,3 +89,17 @@ as_comma_placement(Config) ->
["as", "foo,bar", ",", "baz", ",qux", "compile"],
{ok, [{app, Name}]}).
+as_dir_name(Config) ->
+ AppDir = ?config(apps, Config),
+
+ Name = rebar_test_utils:create_random_name("as_dir_name_"),
+ 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}]}),
+
+ true = filelib:is_dir(filename:join([AppDir, "_build", "foo+bar+baz"])).
+