diff options
| author | Tristan Sloughter <t@crashfast.com> | 2016-02-21 09:47:31 -0600 | 
|---|---|---|
| committer | Tristan Sloughter <t@crashfast.com> | 2016-02-21 09:47:31 -0600 | 
| commit | 862486cac743174b6a3a2ffb487dc851ea97020a (patch) | |
| tree | ae01a72905fbfa81fa8fd0c4ac5bbbf4f717698c /test | |
| parent | e3437c1dfbb170fe07793004738c29963b887466 (diff) | |
| parent | caf4468f3bbbea75be35e0cf0560990b5db66e7e (diff) | |
Merge pull request #1061 from ferd/future-proof-lockfiles
Make lock files future-proof
Diffstat (limited to 'test')
| -rw-r--r-- | test/rebar_lock_SUITE.erl | 46 | 
1 files changed, 46 insertions, 0 deletions
| diff --git a/test/rebar_lock_SUITE.erl b/test/rebar_lock_SUITE.erl new file mode 100644 index 0000000..00875f7 --- /dev/null +++ b/test/rebar_lock_SUITE.erl @@ -0,0 +1,46 @@ +%%% Most locking tests are implicit in other test suites handling +%%% dependencies. +%%% This suite is to test the compatibility layers between various +%%% versions of lockfiles. +-module(rebar_lock_SUITE). +-compile(export_all). +-include_lib("common_test/include/ct.hrl"). +-include_lib("eunit/include/eunit.hrl"). + +all() -> [current_version, future_versions_no_attrs, future_versions_attrs]. + +current_version(Config) -> +    %% Current version just dumps the locks as is on disk. +    LockFile = filename:join(?config(priv_dir, Config), "current_version"), +    Locks = [{<<"app1">>, {git,"some_url", {ref,"some_ref"}}, 2}, +             {<<"app2">>, {git,"some_url", {ref,"some_ref"}}, 0}, +             {<<"app3">>, {hg,"some_url", {ref,"some_ref"}}, 1}, +             {<<"pkg1">>,{pkg,<<"name">>,<<"0.1.6">>},3}], +    file:write_file(LockFile, io_lib:format("~p.~n", [Locks])), +    ?assertEqual(Locks, rebar_config:consult_lock_file(LockFile)). + +future_versions_no_attrs(Config) -> +    %% Future versions will keep the same core attribute in there, but +    %% will do so under a new format bundled with a version and potentially +    %% some trailing attributes +    LockFile = filename:join(?config(priv_dir, Config), "future_versions"), +    Locks = [{<<"app1">>, {git,"some_url", {ref,"some_ref"}}, 2}, +             {<<"app2">>, {git,"some_url", {ref,"some_ref"}}, 0}, +             {<<"app3">>, {hg,"some_url", {ref,"some_ref"}}, 1}, +             {<<"pkg1">>,{pkg,<<"name">>,<<"0.1.6">>},3}], +    LockData = {"3.5.2", Locks}, +    file:write_file(LockFile, io_lib:format("~p.~n", [LockData])), +    ?assertEqual(Locks, rebar_config:consult_lock_file(LockFile)). + +future_versions_attrs(Config) -> +    %% Future versions will keep the same core attribute in there, but +    %% will do so under a new format bundled with a version and potentially +    %% some trailing attributes +    LockFile = filename:join(?config(priv_dir, Config), "future_versions"), +    Locks = [{<<"app1">>, {git,"some_url", {ref,"some_ref"}}, 2}, +             {<<"app2">>, {git,"some_url", {ref,"some_ref"}}, 0}, +             {<<"app3">>, {hg,"some_url", {ref,"some_ref"}}, 1}, +             {<<"pkg1">>,{pkg,<<"name">>,<<"0.1.6">>},3}], +    LockData = {"3.5.2", Locks}, +    file:write_file(LockFile, io_lib:format("~p.~na.~n{b,c}.~n[d,e,f].~n", [LockData])), +    ?assertEqual(Locks, rebar_config:consult_lock_file(LockFile)). | 
