From f80fd7b08c2e2dc2992ee2a6b8d48d311c538864 Mon Sep 17 00:00:00 2001 From: Decebal Suiu Date: Fri, 8 Jan 2021 22:30:59 +0200 Subject: [PATCH] Add PluginDependencyTest#dependentUnload --- .../java/org/pf4j/PluginDependencyTest.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/pf4j/src/test/java/org/pf4j/PluginDependencyTest.java b/pf4j/src/test/java/org/pf4j/PluginDependencyTest.java index dbb619c..3914775 100644 --- a/pf4j/src/test/java/org/pf4j/PluginDependencyTest.java +++ b/pf4j/src/test/java/org/pf4j/PluginDependencyTest.java @@ -120,4 +120,30 @@ public class PluginDependencyTest { assertEquals(0, pluginManager.getStartedPlugins().size()); } + @Test + public void dependentUnload() throws Exception { + // B depends on A + PluginZip pluginA = new PluginZip.Builder(pluginsPath.resolve("A-plugin-1.2.3.zip"), "plugin.a") + .pluginVersion("1.2.3").build(); + + PluginZip pluginB = new PluginZip.Builder(pluginsPath.resolve("B-plugin-1.2.3.zip"), "plugin.b") + .pluginDependencies("plugin.a") + .pluginVersion("1.2.3").build(); + + pluginManager.loadPlugins(); + assertEquals(2, pluginManager.getPlugins().size()); + + pluginManager.startPlugins(); + assertEquals(2, pluginManager.getStartedPlugins().size()); + + // stop A, both A and B should be stopped + pluginManager.stopPlugin("plugin.a"); + assertEquals(0, pluginManager.getStartedPlugins().size()); + + // unload A, both A and B should be unloaded + pluginManager.unloadPlugin("plugin.a"); + assertEquals(0, pluginManager.getResolvedPlugins().size()); + assertEquals(0, pluginManager.getPlugins().size()); + } + } -- 2.39.5