summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerhard Lazu <gerhard@users.noreply.github.com>2017-02-02 10:02:43 +0000
committerGitHub <noreply@github.com>2017-02-02 10:02:43 +0000
commit7d30f7f77b7fb0390424cc458f3b59bbb23a7801 (patch)
treeac5a9e28589c7a292391a541ee0cc9857cd06973
parentaf7150ed7f943bb75ba3b6f7d46d443c0e0801db (diff)
parenta235f2c99c1aa545f5f760bab7f02a1815fd73a5 (diff)
downloadrabbitmq-server-git-7d30f7f77b7fb0390424cc458f3b59bbb23a7801.tar.gz
Merge pull request #1091 from rabbitmq/rabbitmq-server-1090
Ignore pre-release version part in plugin version requirement validation
-rw-r--r--src/rabbit_plugins.erl9
-rw-r--r--test/plugin_versioning_SUITE.erl2
2 files changed, 10 insertions, 1 deletions
diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl
index 262f20913f..994e027eac 100644
--- a/src/rabbit_plugins.erl
+++ b/src/rabbit_plugins.erl
@@ -340,7 +340,10 @@ check_plugins_versions(PluginName, AllPlugins, RequiredVersions) ->
is_version_supported("", _) -> true;
is_version_supported("0.0.0", _) -> true;
is_version_supported(_Version, []) -> true;
-is_version_supported(Version, ExpectedVersions) ->
+is_version_supported(VersionFull, ExpectedVersions) ->
+ %% Pre-release version should be supported in plugins,
+ %% therefore preview part should be removed
+ Version = remove_version_preview_part(VersionFull),
case lists:any(fun(ExpectedVersion) ->
rabbit_misc:version_minor_equivalent(ExpectedVersion, Version)
andalso
@@ -351,6 +354,10 @@ is_version_supported(Version, ExpectedVersions) ->
false -> false
end.
+remove_version_preview_part(Version) ->
+ {Ver, _Preview} = rabbit_semver:parse(Version),
+ iolist_to_binary(rabbit_semver:format({Ver, {[], []}})).
+
clean_plugins(Plugins) ->
{ok, ExpandDir} = application:get_env(rabbit, plugins_expand_dir),
[clean_plugin(Plugin, ExpandDir) || Plugin <- Plugins].
diff --git a/test/plugin_versioning_SUITE.erl b/test/plugin_versioning_SUITE.erl
index 9c000557b8..e184aeac64 100644
--- a/test/plugin_versioning_SUITE.erl
+++ b/test/plugin_versioning_SUITE.erl
@@ -81,6 +81,8 @@ version_support(_Config) ->
,{["3.5.2", "3.6.1"], "3.6.2.999", true} %% x.y.z.p values are supported
,{["3.5.2", "3.6.2.333"], "3.6.2.999", true} %% x.y.z.p values are supported
,{["3.5.2", "3.6.2.333"], "3.6.2.222", false} %% x.y.z.p values are supported
+ ,{["3.6.0", "3.7.0"], "3.6.3-alpha.1", true} %% Pre-release versions handled like semver part
+ ,{["3.6.0", "3.7.0"], "3.7.0-alpha.89", true}
],
lists:foreach(