diff options
-rw-r--r-- | src/rebar_dir.erl | 7 | ||||
-rw-r--r-- | test/rebar_as_SUITE.erl | 20 |
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"])). + |