From 2519c415bf7b2ad7aa2ba273990e7500379d2156 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Fri, 27 Sep 2019 11:40:06 +0200 Subject: [PATCH] Set uninstalled marker on cancel --- .../java/sonia/scm/plugin/PendingPluginUninstallation.java | 1 + .../test/java/sonia/scm/plugin/DefaultPluginManagerTest.java | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/PendingPluginUninstallation.java b/scm-webapp/src/main/java/sonia/scm/plugin/PendingPluginUninstallation.java index e5481fb292..8d5a44d60a 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/PendingPluginUninstallation.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/PendingPluginUninstallation.java @@ -24,6 +24,7 @@ class PendingPluginUninstallation { LOG.info("cancel uninstallation of plugin {}", name); try { Files.delete(uninstallFile); + plugin.setMarkedForUninstall(false); } catch (IOException ex) { throw new PluginFailedToCancelInstallationException("failed to cancel uninstallation of plugin " + name, ex); } 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 c761034ac1..520fcbbbef 100644 --- a/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/plugin/DefaultPluginManagerTest.java @@ -32,6 +32,7 @@ import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.any; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.lenient; @@ -455,6 +456,8 @@ class DefaultPluginManagerTest { Files.createDirectories(mailPluginPath); when(mailPlugin.getDirectory()).thenReturn(mailPluginPath); when(loader.getInstalledPlugins()).thenReturn(singletonList(mailPlugin)); + ArgumentCaptor uninstallCaptor = ArgumentCaptor.forClass(Boolean.class); + doNothing().when(mailPlugin).setMarkedForUninstall(uninstallCaptor.capture()); AvailablePlugin git = createAvailable("scm-git-plugin"); when(center.getAvailable()).thenReturn(ImmutableSet.of(git)); @@ -468,6 +471,8 @@ class DefaultPluginManagerTest { assertThat(mailPluginPath.resolve("uninstall")).doesNotExist(); verify(gitPendingPluginInformation).cancel(); + Boolean lasUninstallMarkerSet = uninstallCaptor.getAllValues().get(uninstallCaptor.getAllValues().size() - 1); + assertThat(lasUninstallMarkerSet).isFalse(); } }