From: Simon Brandhof Date: Wed, 6 May 2015 08:50:08 +0000 (+0200) Subject: SONAR-6517 fix regression - server should stop if plugin is not compatible with SQ... X-Git-Tag: 5.2-RC1~2005 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=53b12f3331f7985de42b1917965d3cae8aa71a15;p=sonarqube.git SONAR-6517 fix regression - server should stop if plugin is not compatible with SQ version (see SONAR-3516) --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerPluginRepository.java b/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerPluginRepository.java index cb9db1f4042..61258abec8e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerPluginRepository.java +++ b/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerPluginRepository.java @@ -226,17 +226,17 @@ public class ServerPluginRepository implements PluginRepository, Startable { do { removedKeys.clear(); for (PluginInfo plugin : pluginInfosByKeys.values()) { + if (!plugin.isCompatibleWith(server.getVersion())) { + throw MessageException.of(String.format( + "Plugin %s [%s] requires at least SonarQube %s", plugin.getName(), plugin.getKey(), plugin.getMinimalSqVersion())); + } + if (!Strings.isNullOrEmpty(plugin.getBasePlugin()) && !pluginInfosByKeys.containsKey(plugin.getBasePlugin())) { // this plugin extends a plugin that is not installed LOG.warn("Plugin {} [{}] is ignored because its base plugin [{}] is not installed", plugin.getName(), plugin.getKey(), plugin.getBasePlugin()); removedKeys.add(plugin.getKey()); } - if (!plugin.isCompatibleWith(server.getVersion())) { - LOG.warn("Plugin {} [{}] is ignored because it requires at least SonarQube {}", plugin.getName(), plugin.getKey(), plugin.getMinimalSqVersion()); - removedKeys.add(plugin.getKey()); - } - for (PluginInfo.RequiredPlugin requiredPlugin : plugin.getRequiredPlugins()) { PluginInfo available = pluginInfosByKeys.get(requiredPlugin.getKey()); if (available == null) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/plugins/ServerPluginRepositoryTest.java b/server/sonar-server/src/test/java/org/sonar/server/plugins/ServerPluginRepositoryTest.java index ea87cb3af88..8046379bca2 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/plugins/ServerPluginRepositoryTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/plugins/ServerPluginRepositoryTest.java @@ -215,14 +215,16 @@ public class ServerPluginRepositoryTest { } @Test - public void plugin_is_ignored_at_startup_if_unsupported_sq() throws Exception { + public void fail_if_plugin_does_not_support_sq_version() throws Exception { when(server.getVersion()).thenReturn("1.0"); copyTestPluginTo("test-base-plugin", fs.getInstalledPluginsDir()); - underTest.start(); - - // plugin requires SQ 4.5.1 but SQ 1.0 is installed - assertThat(underTest.getPluginInfos()).isEmpty(); + try { + underTest.start(); + fail(); + } catch (MessageException e) { + assertThat(e).hasMessage("Plugin Base Plugin [testbase] requires at least SonarQube 4.5.4"); + } } @Test