From f53f6f0a250ae8ccf2e833f000ca1b66db2b279a Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Wed, 18 Sep 2019 08:35:59 +0200 Subject: [PATCH] Execute restart, when there are only plugins to uninstall --- .../java/sonia/scm/plugin/DefaultPluginManager.java | 2 +- .../sonia/scm/plugin/DefaultPluginManagerTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java index b51372e532..e0aa04776f 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java @@ -222,7 +222,7 @@ public class DefaultPluginManager implements PluginManager { @Override public void executePendingAndRestart() { PluginPermissions.manage().check(); - if (!pendingQueue.isEmpty()) { + if (!pendingQueue.isEmpty() || getInstalled().stream().anyMatch(InstalledPlugin::isMarkedForUninstall)) { restart("execute pending plugin changes"); } } diff --git a/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java b/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java index 5ebc500885..057a05eb79 100644 --- a/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java @@ -415,6 +415,18 @@ class DefaultPluginManagerTest { verify(mailPlugin).setUninstallable(false); } + + @Test + void shouldRestartWithUninstallOnly() { + InstalledPlugin mailPlugin = createInstalled("scm-mail-plugin"); + when(mailPlugin.isMarkedForUninstall()).thenReturn(true); + + when(loader.getInstalledPlugins()).thenReturn(singletonList(mailPlugin)); + + manager.executePendingAndRestart(); + + verify(eventBus).post(any(RestartEvent.class)); + } } @Nested