diff options
Diffstat (limited to 'test/rebar_dir_SUITE.erl')
-rw-r--r-- | test/rebar_dir_SUITE.erl | 98 |
1 files changed, 93 insertions, 5 deletions
diff --git a/test/rebar_dir_SUITE.erl b/test/rebar_dir_SUITE.erl index 9734830..81051e6 100644 --- a/test/rebar_dir_SUITE.erl +++ b/test/rebar_dir_SUITE.erl @@ -3,8 +3,11 @@ -export([all/0, init_per_testcase/2, end_per_testcase/2]). -export([default_src_dirs/1, default_extra_src_dirs/1, default_all_src_dirs/1]). --export([src_dirs/1, extra_src_dirs/1, all_src_dirs/1]). +-export([src_dirs/1, alt_src_dir_nested/1, src_dirs_with_opts/1, extra_src_dirs/1, all_src_dirs/1]). +-export([src_dir_opts/1, recursive/1]). +-export([top_src_dirs/1]). -export([profile_src_dirs/1, profile_extra_src_dirs/1, profile_all_src_dirs/1]). +-export([profile_src_dir_opts/1]). -export([retarget_path/1, alt_base_dir_abs/1, alt_base_dir_rel/1]). -export([global_cache_dir/1, default_global_cache_dir/1, overwrite_default_global_cache_dir/1]). @@ -14,8 +17,9 @@ all() -> [default_src_dirs, default_extra_src_dirs, default_all_src_dirs, - src_dirs, extra_src_dirs, all_src_dirs, + src_dirs, alt_src_dir_nested, extra_src_dirs, all_src_dirs, src_dir_opts, recursive, profile_src_dirs, profile_extra_src_dirs, profile_all_src_dirs, + profile_src_dir_opts, top_src_dirs, retarget_path, alt_base_dir_abs, alt_base_dir_rel, global_cache_dir, default_global_cache_dir, overwrite_default_global_cache_dir]. @@ -65,10 +69,35 @@ 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)). + [".", "..", "../..", "bar", "baz", "foo"] = rebar_dir:src_dirs(rebar_state:opts(State)). + +alt_src_dir_nested(Config) -> + RebarConfig = [{src_dirs, ["src", "alt/nested"]}], + AppsDir = ?config(apps, Config), + Name1 = ?config(app_one, Config), + ModDir = filename:join([AppsDir, "apps", Name1, "alt", "nested"]), + Mod = "-module(altmod). -export([main/0]). main() -> ok.", + + ec_file:mkdir_path(ModDir), + ok = file:write_file(filename:join([ModDir, "altmod.erl"]), Mod), + + Ebin = filename:join([AppsDir, "_build", "default", "lib", Name1, "ebin", "altmod.beam"]), + {ok, State} = rebar_test_utils:run_and_check( + Config, RebarConfig, ["compile"], + {ok, [{file, Ebin}]} + ), + ["alt/nested", "src"] = rebar_dir:src_dirs(rebar_state:opts(State)). + +src_dirs_with_opts(Config) -> + RebarConfig = [{erl_opts, [{src_dirs, ["foo", "bar", "baz"]}, + {src_dirs, [{"foo",[{recursive,false}]}, "qux"]}]}], + {ok, State} = rebar_test_utils:run_and_check(Config, RebarConfig, ["compile"], return), + + ["bar", "baz", "foo", "qux"] = rebar_dir:src_dirs(rebar_state:opts(State)). extra_src_dirs(Config) -> RebarConfig = [{erl_opts, [{extra_src_dirs, ["foo", "bar", "baz"]}]}], @@ -77,11 +106,50 @@ extra_src_dirs(Config) -> ["bar", "baz", "foo"] = rebar_dir:extra_src_dirs(rebar_state:opts(State)). all_src_dirs(Config) -> - RebarConfig = [{erl_opts, [{src_dirs, ["foo", "bar"]}, {extra_src_dirs, ["baz", "qux"]}]}], + RebarConfig = [{erl_opts, [{src_dirs, ["foo", "bar"]}, {extra_src_dirs, ["baz", "qux"]}, {src_dirs, [{"foo", [{recursive,false}]}]}]}], {ok, State} = rebar_test_utils:run_and_check(Config, RebarConfig, ["compile"], return), ["bar", "baz", "foo", "qux"] = rebar_dir:all_src_dirs(rebar_state:opts(State)). +src_dir_opts(Config) -> + RebarConfig = + [{erl_opts, [{src_dirs, [{"foo",[{recursive,true}]}, "bar"]}, + {extra_src_dirs, ["baz", {"foo", [{recursive,false}]}]}, + {src_dirs, [{"foo", [{recursive,false}]}]}]}], + {ok, State} = rebar_test_utils:run_and_check(Config, RebarConfig, + ["compile"], return), + [{recursive,true}] = rebar_dir:src_dir_opts(rebar_state:opts(State), "foo"), + [] = rebar_dir:src_dir_opts(rebar_state:opts(State), "bar"), + [] = rebar_dir:src_dir_opts(rebar_state:opts(State), "nonexisting"). + +recursive(Config) -> + RebarConfig1 = + [{erl_opts, [{src_dirs, ["foo", "bar"]}, + {extra_src_dirs, ["baz", {"foo", [{recursive,true}]}]}, + {src_dirs, [{"foo", [{recursive,false}]}]}]}], + {ok, State1} = rebar_test_utils:run_and_check(Config, RebarConfig1, + ["compile"], return), + false = rebar_dir:recursive(rebar_state:opts(State1), "foo"), + true = rebar_dir:recursive(rebar_state:opts(State1), "bar"), + + RebarConfig2 = [{erlc_compiler,[{recursive,false}]}, + {erl_opts,[{src_dirs,["foo",{"bar",[{recursive,true}]}]}]}], + {ok, State2} = rebar_test_utils:run_and_check(Config, RebarConfig2, + ["compile"], return), + false = rebar_dir:recursive(rebar_state:opts(State2), "foo"), + true = rebar_dir:recursive(rebar_state:opts(State2), "bar"), + + ok. + +top_src_dirs(Config) -> + %% We can get the same result out of specifying src_dirs from the config root, + %% not just the erl_opts + RebarConfig = [{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)). + profile_src_dirs(Config) -> RebarConfig = [ {erl_opts, [{src_dirs, ["foo", "bar"]}]}, @@ -118,6 +186,26 @@ profile_all_src_dirs(Config) -> R = lists:sort(["foo", "bar", "baz", "qux"]), R = rebar_dir:all_src_dirs(rebar_state:opts(State)). +profile_src_dir_opts(Config) -> + RebarConfig = [ + {erl_opts, [{src_dirs, ["foo"]}, + {extra_src_dirs, [{"bar",[recursive]}]}]}, + {profiles, [ + {more, [{erl_opts, [{src_dirs, [{"bar",[{recursive,false}]}]}, + {extra_src_dirs, ["qux"]}]}]} + ]} + ], + {ok, State} = rebar_test_utils:run_and_check(Config, RebarConfig, + ["as", "more", "compile"], + return), + + [{recursive,false}] = rebar_dir:src_dir_opts(rebar_state:opts(State),"bar"), + + {ok, State1} = rebar_test_utils:run_and_check(Config, RebarConfig, + ["compile"], return), + + [{recursive,true}] = rebar_dir:src_dir_opts(rebar_state:opts(State1),"bar"). + retarget_path(Config) -> {ok, State} = rebar_test_utils:run_and_check(Config, [], ["compile"], return), |