diff options
-rw-r--r-- | src/rebar_dir.erl | 11 | ||||
-rw-r--r-- | test/rebar_dir_SUITE.erl | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/rebar_dir.erl b/src/rebar_dir.erl index d0c7805..7a779d1 100644 --- a/src/rebar_dir.erl +++ b/src/rebar_dir.erl @@ -258,8 +258,11 @@ extra_src_dirs(Opts, Default) -> %% @private agnostic version of src_dirs and extra_src_dirs. src_dirs(Type, Opts, Default) -> - lists:usort([case D0 of {D,_} -> D; _ -> D0 end || - D0 <- raw_src_dirs(Type,Opts,Default)]). + lists:usort([ + case D0 of + {D,_} -> normalize_relative_path(D); + _ -> normalize_relative_path(D0) + end || D0 <- raw_src_dirs(Type,Opts,Default)]). %% @private extracts the un-formatted src_dirs or extra_src_dirs %% options as configured. @@ -271,6 +274,10 @@ raw_src_dirs(Type, Opts, Default) -> Dirs -> Dirs end. +%% @private normalizes relative paths so that ./a/b/c/ => a/b/c +normalize_relative_path(Path) -> + make_normalized_path(filename:split(Path), []). + %% @doc returns all the source directories (`src_dirs' and %% `extra_src_dirs'). -spec all_src_dirs(rebar_dict()) -> list(file:filename_all()). diff --git a/test/rebar_dir_SUITE.erl b/test/rebar_dir_SUITE.erl index 6797802..3b8e1fc 100644 --- a/test/rebar_dir_SUITE.erl +++ b/test/rebar_dir_SUITE.erl @@ -68,7 +68,7 @@ default_all_src_dirs(Config) -> ["src", "test"] = rebar_dir:all_src_dirs(rebar_state:opts(State), ["src"], ["test"]). src_dirs(Config) -> - RebarConfig = [{erl_opts, [{src_dirs, ["foo", "bar", "baz"]}]}], + RebarConfig = [{erl_opts, [{src_dirs, ["foo", "./bar", "bar", "bar/", "./bar/", "baz"]}]}], {ok, State} = rebar_test_utils:run_and_check(Config, RebarConfig, ["compile"], return), ["bar", "baz", "foo"] = rebar_dir:src_dirs(rebar_state:opts(State)). |