summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2015-06-03 23:09:43 -0500
committerTristan Sloughter <t@crashfast.com>2015-06-18 22:08:19 -0500
commitf7ff07a87d3e282b4016c1725d149389b0d3b6f9 (patch)
tree8b1bcec2ea3ed1a3adf3a8211d59bab985a4464b /test
parent4edfed60a201921995cea987494839eeb6b75638 (diff)
plugins provider
Diffstat (limited to 'test')
-rw-r--r--test/rebar_compile_SUITE.erl133
-rw-r--r--test/rebar_plugins_SUITE.erl201
2 files changed, 202 insertions, 132 deletions
diff --git a/test/rebar_compile_SUITE.erl b/test/rebar_compile_SUITE.erl
index 7025eef..7e72404 100644
--- a/test/rebar_compile_SUITE.erl
+++ b/test/rebar_compile_SUITE.erl
@@ -18,9 +18,6 @@
deps_in_path/1,
delete_beam_if_source_deleted/1,
checkout_priority/1,
- compile_plugins/1,
- compile_global_plugins/1,
- complex_plugins/1,
highest_version_of_pkg_dep/1,
parse_transform_test/1]).
@@ -49,8 +46,7 @@ all() ->
build_all_srcdirs, recompile_when_hrl_changes,
recompile_when_opts_change, dont_recompile_when_opts_dont_change,
dont_recompile_yrl_or_xrl, delete_beam_if_source_deleted,
- deps_in_path, checkout_priority, compile_plugins, compile_global_plugins,
- complex_plugins, highest_version_of_pkg_dep, parse_transform_test].
+ deps_in_path, checkout_priority, highest_version_of_pkg_dep, parse_transform_test].
build_basic_app(Config) ->
AppDir = ?config(apps, Config),
@@ -399,133 +395,6 @@ checkout_priority(Config) ->
?assertEqual(Vsn2, proplists:get_value(vsn, DepProps)),
?assertEqual(Vsn2, proplists:get_value(vsn, PkgProps)).
-%% Tests that compiling a project installs and compiles the plugins of deps
-compile_plugins(Config) ->
- AppDir = ?config(apps, Config),
-
- Name = rebar_test_utils:create_random_name("app1_"),
- Vsn = rebar_test_utils:create_random_vsn(),
- rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
-
- DepName = rebar_test_utils:create_random_name("dep1_"),
- PluginName = rebar_test_utils:create_random_name("plugin1_"),
-
- Plugins = rebar_test_utils:expand_deps(git, [{PluginName, Vsn, []}]),
- mock_git_resource:mock([{deps, rebar_test_utils:flat_deps(Plugins)}]),
-
- mock_pkg_resource:mock([{pkgdeps, [{{list_to_binary(DepName), list_to_binary(Vsn)}, []}]},
- {config, [{plugins, [
- {list_to_atom(PluginName),
- {git, "http://site.com/user/"++PluginName++".git",
- {tag, Vsn}}}]}]}]),
-
- RConfFile =
- rebar_test_utils:create_config(AppDir,
- [{deps, [
- list_to_atom(DepName)
- ]}]),
- {ok, RConf} = file:consult(RConfFile),
-
- %% Build with deps.
- rebar_test_utils:run_and_check(
- Config, RConf, ["compile"],
- {ok, [{app, Name}, {plugin, PluginName}, {dep, DepName}]}
- ).
-
-%% Tests that compiling a project installs and compiles the global plugins
-compile_global_plugins(Config) ->
- AppDir = ?config(apps, Config),
- GlobalDir = filename:join(AppDir, "global"),
- GlobalConfigDir = filename:join([GlobalDir, ".config", "rebar3"]),
- GlobalConfig = filename:join([GlobalDir, ".config", "rebar3", "rebar.config"]),
-
- meck:new(rebar_dir, [passthrough]),
- meck:expect(rebar_dir, global_config, fun() -> GlobalConfig end),
- meck:expect(rebar_dir, global_cache_dir, fun(_) -> GlobalDir end),
-
- Name = rebar_test_utils:create_random_name("app1_"),
- Vsn = rebar_test_utils:create_random_vsn(),
- Vsn2 = rebar_test_utils:create_random_vsn(),
- rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
-
- DepName = rebar_test_utils:create_random_name("dep1_"),
- PluginName = rebar_test_utils:create_random_name("plugin1_"),
-
- mock_git_resource:mock([{deps, [{list_to_atom(PluginName), Vsn},
- {list_to_atom(PluginName), Vsn2},
- {{iolist_to_binary(DepName), iolist_to_binary(Vsn)}, []}]}]),
-
-
- rebar_test_utils:create_config(GlobalConfigDir,
- [{plugins, [
- {list_to_atom(PluginName), {git, "http://site.com/user/"++PluginName++".git", {tag, Vsn}}}
- ]}]),
- RConfFile =
- rebar_test_utils:create_config(AppDir,
- [{deps, [
- {list_to_atom(DepName), {git, "http://site.com/user/"++DepName++".git", {tag, Vsn}}}
- ]},
- {plugins, [
- {list_to_atom(PluginName), {git, "http://site.com/user/"++PluginName++".git", {tag, Vsn2}}}
- ]}]),
- {ok, RConf} = file:consult(RConfFile),
-
- %% Runs global plugin install
- rebar3:init_config(),
-
- %% Build with deps.
- rebar_test_utils:run_and_check(
- Config, RConf, ["compile"],
- {ok, [{app, Name},
- {global_plugin, PluginName, Vsn},
- {plugin, PluginName, Vsn2},
- {dep, DepName}]}
- ),
-
- meck:unload(rebar_dir).
-
-%% Tests installing of plugin with transitive deps
-complex_plugins(Config) ->
- AppDir = ?config(apps, Config),
-
- meck:new(rebar_dir, [passthrough]),
-
- Name = rebar_test_utils:create_random_name("app1_"),
- Vsn = rebar_test_utils:create_random_vsn(),
- Vsn2 = rebar_test_utils:create_random_vsn(),
- rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
-
- DepName = rebar_test_utils:create_random_name("dep1_"),
- DepName2 = rebar_test_utils:create_random_name("dep2_"),
- DepName3 = rebar_test_utils:create_random_name("dep3_"),
- PluginName = rebar_test_utils:create_random_name("plugin1_"),
-
- Deps = rebar_test_utils:expand_deps(git, [{PluginName, Vsn2, [{DepName2, Vsn,
- [{DepName3, Vsn, []}]}]}
- ,{DepName, Vsn, []}]),
- mock_git_resource:mock([{deps, rebar_test_utils:flat_deps(Deps)}]),
-
- RConfFile =
- rebar_test_utils:create_config(AppDir,
- [{deps, [
- {list_to_atom(DepName), {git, "http://site.com/user/"++DepName++".git", {tag, Vsn}}}
- ]},
- {plugins, [
- {list_to_atom(PluginName), {git, "http://site.com/user/"++PluginName++".git", {tag, Vsn2}}}
- ]}]),
- {ok, RConf} = file:consult(RConfFile),
-
- %% Build with deps.
- rebar_test_utils:run_and_check(
- Config, RConf, ["compile"],
- {ok, [{app, Name},
- {plugin, PluginName, Vsn2},
- {plugin, DepName2},
- {plugin, DepName3},
- {dep, DepName}]}
- ),
-
- meck:unload(rebar_dir).
highest_version_of_pkg_dep(Config) ->
AppDir = ?config(apps, Config),
diff --git a/test/rebar_plugins_SUITE.erl b/test/rebar_plugins_SUITE.erl
new file mode 100644
index 0000000..adfeafe
--- /dev/null
+++ b/test/rebar_plugins_SUITE.erl
@@ -0,0 +1,201 @@
+-module(rebar_plugins_SUITE).
+
+-export([suite/0,
+ init_per_suite/1,
+ end_per_suite/1,
+ init_per_testcase/2,
+ end_per_testcase/2,
+ all/0,
+ compile_plugins/1,
+ compile_global_plugins/1,
+ complex_plugins/1,
+ upgrade/1]).
+
+-include_lib("common_test/include/ct.hrl").
+-include_lib("eunit/include/eunit.hrl").
+-include_lib("kernel/include/file.hrl").
+
+suite() ->
+ [].
+
+init_per_suite(Config) ->
+ Config.
+
+end_per_suite(_Config) ->
+ ok.
+
+init_per_testcase(_, Config) ->
+ rebar_test_utils:init_rebar_state(Config).
+
+end_per_testcase(_, _Config) ->
+ catch meck:unload().
+
+all() ->
+ [compile_plugins, compile_global_plugins, complex_plugins, upgrade].
+
+%% Tests that compiling a project installs and compiles the plugins of deps
+compile_plugins(Config) ->
+ AppDir = ?config(apps, Config),
+
+ Name = rebar_test_utils:create_random_name("app1_"),
+ Vsn = rebar_test_utils:create_random_vsn(),
+ rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
+
+ DepName = rebar_test_utils:create_random_name("dep1_"),
+ PluginName = rebar_test_utils:create_random_name("plugin1_"),
+
+ Plugins = rebar_test_utils:expand_deps(git, [{PluginName, Vsn, []}]),
+ mock_git_resource:mock([{deps, rebar_test_utils:flat_deps(Plugins)}]),
+
+ mock_pkg_resource:mock([{pkgdeps, [{{list_to_binary(DepName), list_to_binary(Vsn)}, []}]},
+ {config, [{plugins, [
+ {list_to_atom(PluginName),
+ {git, "http://site.com/user/"++PluginName++".git",
+ {tag, Vsn}}}]}]}]),
+
+ RConfFile =
+ rebar_test_utils:create_config(AppDir,
+ [{deps, [
+ list_to_atom(DepName)
+ ]}]),
+ {ok, RConf} = file:consult(RConfFile),
+
+ %% Build with deps.
+ rebar_test_utils:run_and_check(
+ Config, RConf, ["compile"],
+ {ok, [{app, Name}, {plugin, PluginName}, {dep, DepName}]}
+ ).
+
+%% Tests that compiling a project installs and compiles the global plugins
+compile_global_plugins(Config) ->
+ AppDir = ?config(apps, Config),
+ GlobalDir = filename:join(AppDir, "global"),
+ GlobalConfigDir = filename:join([GlobalDir, ".config", "rebar3"]),
+ GlobalConfig = filename:join([GlobalDir, ".config", "rebar3", "rebar.config"]),
+
+ meck:new(rebar_dir, [passthrough]),
+ meck:expect(rebar_dir, global_config, fun() -> GlobalConfig end),
+ meck:expect(rebar_dir, global_cache_dir, fun(_) -> GlobalDir end),
+
+ Name = rebar_test_utils:create_random_name("app1_"),
+ Vsn = rebar_test_utils:create_random_vsn(),
+ Vsn2 = rebar_test_utils:create_random_vsn(),
+ rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
+
+ DepName = rebar_test_utils:create_random_name("dep1_"),
+ PluginName = rebar_test_utils:create_random_name("plugin1_"),
+
+ mock_git_resource:mock([{deps, [{list_to_atom(PluginName), Vsn},
+ {list_to_atom(PluginName), Vsn2},
+ {{iolist_to_binary(DepName), iolist_to_binary(Vsn)}, []}]}]),
+
+
+ rebar_test_utils:create_config(GlobalConfigDir,
+ [{plugins, [
+ {list_to_atom(PluginName), {git, "http://site.com/user/"++PluginName++".git", {tag, Vsn}}}
+ ]}]),
+ RConfFile =
+ rebar_test_utils:create_config(AppDir,
+ [{deps, [
+ {list_to_atom(DepName), {git, "http://site.com/user/"++DepName++".git", {tag, Vsn}}}
+ ]},
+ {plugins, [
+ {list_to_atom(PluginName), {git, "http://site.com/user/"++PluginName++".git", {tag, Vsn2}}}
+ ]}]),
+ {ok, RConf} = file:consult(RConfFile),
+
+ %% Runs global plugin install
+ rebar3:init_config(),
+
+ %% Build with deps.
+ rebar_test_utils:run_and_check(
+ Config, RConf, ["compile"],
+ {ok, [{app, Name},
+ {global_plugin, PluginName, Vsn},
+ {plugin, PluginName, Vsn2},
+ {dep, DepName}]}
+ ),
+
+ meck:unload(rebar_dir).
+
+%% Tests installing of plugin with transitive deps
+complex_plugins(Config) ->
+ AppDir = ?config(apps, Config),
+
+ meck:new(rebar_dir, [passthrough]),
+
+ Name = rebar_test_utils:create_random_name("app1_"),
+ Vsn = rebar_test_utils:create_random_vsn(),
+ Vsn2 = rebar_test_utils:create_random_vsn(),
+ rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
+
+ DepName = rebar_test_utils:create_random_name("dep1_"),
+ DepName2 = rebar_test_utils:create_random_name("dep2_"),
+ DepName3 = rebar_test_utils:create_random_name("dep3_"),
+ PluginName = rebar_test_utils:create_random_name("plugin1_"),
+
+ Deps = rebar_test_utils:expand_deps(git, [{PluginName, Vsn2, [{DepName2, Vsn,
+ [{DepName3, Vsn, []}]}]}
+ ,{DepName, Vsn, []}]),
+ mock_git_resource:mock([{deps, rebar_test_utils:flat_deps(Deps)}]),
+
+ RConfFile =
+ rebar_test_utils:create_config(AppDir,
+ [{deps, [
+ {list_to_atom(DepName), {git, "http://site.com/user/"++DepName++".git", {tag, Vsn}}}
+ ]},
+ {plugins, [
+ {list_to_atom(PluginName), {git, "http://site.com/user/"++PluginName++".git", {tag, Vsn2}}}
+ ]}]),
+ {ok, RConf} = file:consult(RConfFile),
+
+ %% Build with deps.
+ rebar_test_utils:run_and_check(
+ Config, RConf, ["compile"],
+ {ok, [{app, Name},
+ {plugin, PluginName, Vsn2},
+ {plugin, DepName2},
+ {plugin, DepName3},
+ {dep, DepName}]}
+ ),
+
+ meck:unload(rebar_dir).
+
+upgrade(Config) ->
+ AppDir = ?config(apps, Config),
+
+ Name = rebar_test_utils:create_random_name("app1_"),
+ Vsn = rebar_test_utils:create_random_vsn(),
+ rebar_test_utils:create_app(AppDir, Name, Vsn, [kernel, stdlib]),
+
+ PkgName = rebar_test_utils:create_random_name("pkg1_"),
+ mock_git_resource:mock([]),
+ mock_pkg_resource:mock([
+ {pkgdeps, [{{iolist_to_binary(PkgName), <<"0.1.0">>}, []},
+ {{iolist_to_binary(PkgName), <<"0.0.1">>}, []},
+ {{iolist_to_binary(PkgName), <<"0.1.1">>}, []}]}
+ ]),
+
+ RConfFile = rebar_test_utils:create_config(AppDir, [{plugins, [list_to_atom(PkgName)]}]),
+ {ok, RConf} = file:consult(RConfFile),
+
+ %% Build with deps.
+ rebar_test_utils:run_and_check(
+ Config, RConf, ["compile"],
+ {ok, [{app, Name}, {plugin, PkgName, <<"0.1.1">>}]}
+ ),
+
+ catch mock_pkg_resource:unmock(),
+ mock_pkg_resource:mock([
+ {pkgdeps, [{{iolist_to_binary(PkgName), <<"0.1.0">>}, []},
+ {{iolist_to_binary(PkgName), <<"0.0.1">>}, []},
+ {{iolist_to_binary(PkgName), <<"0.1.3">>}, []},
+ {{iolist_to_binary(PkgName), <<"0.1.1">>}, []}]},
+ {upgrade, [PkgName]}
+ ]),
+
+ %% Build with deps.
+ rebar_test_utils:run_and_check(
+ Config, RConf, ["plugins", "upgrade", PkgName],
+ {ok, [{app, Name}, {plugin, PkgName, <<"0.1.3">>}]}
+ ).