From: Decebal Suiu Date: Sat, 6 Apr 2024 20:29:37 +0000 (+0300) Subject: Add stopPluginWithDeletedDependency (see #576) X-Git-Tag: release-3.11.1~5 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=74aa987ca9a23234efbd58766d648135af7bdcc7;p=pf4j.git Add stopPluginWithDeletedDependency (see #576) --- diff --git a/pf4j/src/test/java/org/pf4j/DefaultPluginManagerTest.java b/pf4j/src/test/java/org/pf4j/DefaultPluginManagerTest.java index bc23630..d10689f 100644 --- a/pf4j/src/test/java/org/pf4j/DefaultPluginManagerTest.java +++ b/pf4j/src/test/java/org/pf4j/DefaultPluginManagerTest.java @@ -366,4 +366,34 @@ public class DefaultPluginManagerTest { assertTrue(unloadedEvent.isPresent()); } + + @Test + void stopPluginWithDeletedDependency() throws IOException { + PluginZip pluginZip1 = new PluginZip.Builder(pluginsPath.resolve("my-first-plugin-1.1.1.zip"), "myPlugin1") + .pluginVersion("1.1.1") + .build(); + + PluginZip pluginZip2 = new PluginZip.Builder(pluginsPath.resolve("my-second-plugin-2.2.2.zip"), "myPlugin2") + .pluginVersion("2.2.2") + .pluginDependencies("myPlugin1") + .build(); + + pluginManager.loadPlugins(); + pluginManager.startPlugins(); + + assertEquals(PluginState.STARTED, pluginManager.getPlugin(pluginZip1.pluginId()).getPluginState()); + assertEquals(PluginState.STARTED, pluginManager.getPlugin(pluginZip2.pluginId()).getPluginState()); + + System.out.println("Stopping " + pluginZip1.pluginId()); + pluginManager.stopPlugin(pluginZip1.pluginId()); + assertEquals(PluginState.STOPPED, pluginManager.getPlugin(pluginZip1.pluginId()).getPluginState()); + + boolean deleted = pluginManager.deletePlugin(pluginZip1.pluginId()); + assertTrue(deleted); + + assertEquals(0, pluginManager.getPlugins().size()); + + assertThrows(PluginNotFoundException.class, () -> pluginManager.stopPlugin(pluginZip2.pluginId())); + } + }