diff options
author | Decebal Suiu <decebal.suiu@gmail.com> | 2017-07-12 21:48:41 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-12 21:48:41 +0300 |
commit | c9bdd98e6df7c146377f8b7d56146bfae7d5a797 (patch) | |
tree | d603c7e10826384ca51e2256717f91fd0c07b485 /pf4j/src/test/java | |
parent | 49bd1f59964355ced04f97079d1349227b0f69f3 (diff) | |
download | pf4j-c9bdd98e6df7c146377f8b7d56146bfae7d5a797.tar.gz pf4j-c9bdd98e6df7c146377f8b7d56146bfae7d5a797.zip |
Add VersionManager abstractization (breaking change) (#155)
Diffstat (limited to 'pf4j/src/test/java')
9 files changed, 110 insertions, 71 deletions
diff --git a/pf4j/src/test/java/ro/fortsoft/pf4j/DefaultPluginManagerTest.java b/pf4j/src/test/java/ro/fortsoft/pf4j/DefaultPluginManagerTest.java index 5f235be..4c154d1 100644 --- a/pf4j/src/test/java/ro/fortsoft/pf4j/DefaultPluginManagerTest.java +++ b/pf4j/src/test/java/ro/fortsoft/pf4j/DefaultPluginManagerTest.java @@ -15,7 +15,6 @@ */ package ro.fortsoft.pf4j; -import com.github.zafarkhaja.semver.Version; import org.junit.Before; import org.junit.Test; @@ -27,6 +26,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class DefaultPluginManagerTest { + private PluginDescriptor pd1 = null; private DefaultPluginManager pluginManager = new DefaultPluginManager(); private PluginWrapper pw1; @@ -35,7 +35,7 @@ public class DefaultPluginManagerTest { public void init() throws IOException { pd1 = new PluginDescriptor(); pd1.setPluginId("myPlugin"); - pd1.setPluginVersion(Version.valueOf("1.2.3")); + pd1.setPluginVersion("1.2.3"); pd1.setPluginClass("foo"); pd1.setPluginDescription("My plugin"); pd1.setDependencies("bar, baz"); @@ -73,13 +73,13 @@ public class DefaultPluginManagerTest { // By default accept all since system version not given assertTrue(pluginManager.isPluginValid(pw1)); - pluginManager.setSystemVersion(Version.valueOf("1.0.0")); + pluginManager.setSystemVersion("1.0.0"); assertFalse(pluginManager.isPluginValid(pw1)); - pluginManager.setSystemVersion(Version.valueOf("5.0.0")); + pluginManager.setSystemVersion("5.0.0"); assertTrue(pluginManager.isPluginValid(pw1)); - pluginManager.setSystemVersion(Version.valueOf("6.0.0")); + pluginManager.setSystemVersion("6.0.0"); assertTrue(pluginManager.isPluginValid(pw1)); } @@ -90,13 +90,13 @@ public class DefaultPluginManagerTest { // By default accept all since system version not given assertTrue(pluginManager.isPluginValid(pw1)); - pluginManager.setSystemVersion(Version.valueOf("1.0.0")); + pluginManager.setSystemVersion("1.0.0"); assertFalse(pluginManager.isPluginValid(pw1)); - pluginManager.setSystemVersion(Version.valueOf("5.0.0")); + pluginManager.setSystemVersion("5.0.0"); assertTrue(pluginManager.isPluginValid(pw1)); - pluginManager.setSystemVersion(Version.valueOf("6.0.0")); + pluginManager.setSystemVersion("6.0.0"); assertFalse(pluginManager.isPluginValid(pw1)); } @@ -104,4 +104,5 @@ public class DefaultPluginManagerTest { public void testDefaultExactVersionAllowed() throws Exception { assertEquals(false, pluginManager.isExactVersionAllowed()); } + } diff --git a/pf4j/src/test/java/ro/fortsoft/pf4j/DefaultVersionManagerTest.java b/pf4j/src/test/java/ro/fortsoft/pf4j/DefaultVersionManagerTest.java new file mode 100644 index 0000000..802291d --- /dev/null +++ b/pf4j/src/test/java/ro/fortsoft/pf4j/DefaultVersionManagerTest.java @@ -0,0 +1,52 @@ +/* + * Copyright 2017 Decebal Suiu + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package ro.fortsoft.pf4j; + +import com.github.zafarkhaja.semver.ParseException; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * @author Decebal Suiu + */ +public class DefaultVersionManagerTest { + + private VersionManager versionManager; + + @Before + public void init() { + versionManager = new DefaultVersionManager(); + } + + @Test + public void satisfies() { + assertFalse(versionManager.satisfies(">2.0.0", "1.4.3")); // simple + assertTrue(versionManager.satisfies(">=1.4.0 & <1.6.0", "1.4.3")); // range + } + + @Test(expected = IllegalArgumentException.class) + public void nullOrEmptyVersion() { + assertFalse(versionManager.satisfies(">2.0.0", null)); + } + + @Test(expected = ParseException.class) + public void invalidVersion() { + assertFalse(versionManager.satisfies(">2.0.0", "1.0")); + } + +} diff --git a/pf4j/src/test/java/ro/fortsoft/pf4j/DependencyResolverTest.java b/pf4j/src/test/java/ro/fortsoft/pf4j/DependencyResolverTest.java index e8d1749..14aba39 100644 --- a/pf4j/src/test/java/ro/fortsoft/pf4j/DependencyResolverTest.java +++ b/pf4j/src/test/java/ro/fortsoft/pf4j/DependencyResolverTest.java @@ -15,22 +15,28 @@ */ package ro.fortsoft.pf4j; -import com.github.zafarkhaja.semver.Version; +import org.junit.Before; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; /** * @author Decebal Suiu */ public class DependencyResolverTest { + private DependencyResolver resolver; + + @Before + public void init() { + VersionManager versionManager = new DefaultVersionManager(); + resolver = new DependencyResolver(versionManager); + } + @Test public void sortedPlugins() { // create incomplete plugin descriptor (ignore some attributes) @@ -40,13 +46,12 @@ public class DependencyResolverTest { PluginDescriptor pd2 = new PluginDescriptor() .setPluginId("p2") - .setPluginVersion(Version.forIntegers(0)); // needed in "checkDependencyVersion" method + .setPluginVersion("0.0.0"); // needed in "checkDependencyVersion" method List<PluginDescriptor> plugins = new ArrayList<>(); plugins.add(pd1); plugins.add(pd2); - DependencyResolver resolver = new DependencyResolver(); DependencyResolver.Result result = resolver.resolve(plugins); assertTrue(result.getNotFoundDependencies().isEmpty()); @@ -62,7 +67,6 @@ public class DependencyResolverTest { List<PluginDescriptor> plugins = new ArrayList<>(); plugins.add(pd1); - DependencyResolver resolver = new DependencyResolver(); DependencyResolver.Result result = resolver.resolve(plugins); assertFalse(result.getNotFoundDependencies().isEmpty()); @@ -73,17 +77,17 @@ public class DependencyResolverTest { public void cyclicDependencies() { PluginDescriptor pd1 = new PluginDescriptor() .setPluginId("p1") - .setPluginVersion(Version.forIntegers(0)) + .setPluginVersion("0.0.0") .setDependencies("p2"); PluginDescriptor pd2 = new PluginDescriptor() .setPluginId("p2") - .setPluginVersion(Version.forIntegers(0)) + .setPluginVersion("0.0.0") .setDependencies("p3"); PluginDescriptor pd3 = new PluginDescriptor() .setPluginId("p3") - .setPluginVersion(Version.forIntegers(0)) + .setPluginVersion("0.0.0") .setDependencies("p1"); List<PluginDescriptor> plugins = new ArrayList<>(); @@ -91,7 +95,6 @@ public class DependencyResolverTest { plugins.add(pd2); plugins.add(pd3); - DependencyResolver resolver = new DependencyResolver(); DependencyResolver.Result result = resolver.resolve(plugins); assertTrue(result.hasCyclicDependency()); @@ -106,13 +109,12 @@ public class DependencyResolverTest { PluginDescriptor pd2 = new PluginDescriptor() .setPluginId("p2") - .setPluginVersion(Version.forIntegers(1, 4)); + .setPluginVersion("1.4.0"); List<PluginDescriptor> plugins = new ArrayList<>(); plugins.add(pd1); plugins.add(pd2); - DependencyResolver resolver = new DependencyResolver(); DependencyResolver.Result result = resolver.resolve(plugins); assertFalse(result.getWrongVersionDependencies().isEmpty()); @@ -126,13 +128,12 @@ public class DependencyResolverTest { PluginDescriptor pd2 = new PluginDescriptor() .setPluginId("p2") - .setPluginVersion(Version.forIntegers(2)); + .setPluginVersion("2.0.0"); List<PluginDescriptor> plugins = new ArrayList<>(); plugins.add(pd1); plugins.add(pd2); - DependencyResolver resolver = new DependencyResolver(); DependencyResolver.Result result = resolver.resolve(plugins); assertTrue(result.getWrongVersionDependencies().isEmpty()); diff --git a/pf4j/src/test/java/ro/fortsoft/pf4j/LoadPluginsTest.java b/pf4j/src/test/java/ro/fortsoft/pf4j/LoadPluginsTest.java index 6806595..9ee9899 100644 --- a/pf4j/src/test/java/ro/fortsoft/pf4j/LoadPluginsTest.java +++ b/pf4j/src/test/java/ro/fortsoft/pf4j/LoadPluginsTest.java @@ -15,7 +15,6 @@ */ package ro.fortsoft.pf4j; -import com.github.zafarkhaja.semver.Version; import org.junit.Before; import org.junit.Test; import ro.fortsoft.pf4j.plugin.MockPluginManager; @@ -31,6 +30,7 @@ import static junit.framework.TestCase.assertNull; import static org.junit.Assert.*; public class LoadPluginsTest { + private Path tmpDir; private MockPluginManager pluginManager; private MockZipPlugin p1; @@ -92,14 +92,14 @@ public class LoadPluginsTest { pluginManager.loadPlugins(); pluginManager.startPlugins(); assertEquals(1, pluginManager.getPlugins().size()); - assertEquals(Version.valueOf("1.2.3"), pluginManager.getPlugin(p2.id).getDescriptor().getVersion()); + assertEquals("1.2.3", pluginManager.getPlugin(p2.id).getDescriptor().getVersion()); assertEquals(1, pluginManager.getStartedPlugins().size()); p2.create(); pluginManager.loadPlugins(); pluginManager.startPlugin(p2.id); assertEquals(1, pluginManager.getPlugins().size()); - assertEquals(Version.valueOf("2.0.0"), pluginManager.getPlugin(p2.id).getDescriptor().getVersion()); - assertEquals(Version.valueOf("2.0.0"), pluginManager.getStartedPlugins().get(1).getDescriptor().getVersion()); + assertEquals("2.0.0", pluginManager.getPlugin(p2.id).getDescriptor().getVersion()); + assertEquals("2.0.0", pluginManager.getStartedPlugins().get(1).getDescriptor().getVersion()); } @Test @@ -131,6 +131,7 @@ public class LoadPluginsTest { } private class MockZipPlugin { + public final String id; public final String version; public final String filename; @@ -165,5 +166,7 @@ public class LoadPluginsTest { Files.move(propsFile, propsInZip); } } + } + } diff --git a/pf4j/src/test/java/ro/fortsoft/pf4j/ManifestPluginDescriptorFinderTest.java b/pf4j/src/test/java/ro/fortsoft/pf4j/ManifestPluginDescriptorFinderTest.java index 1d1b621..c858767 100644 --- a/pf4j/src/test/java/ro/fortsoft/pf4j/ManifestPluginDescriptorFinderTest.java +++ b/pf4j/src/test/java/ro/fortsoft/pf4j/ManifestPluginDescriptorFinderTest.java @@ -15,7 +15,6 @@ */ package ro.fortsoft.pf4j; -import com.github.zafarkhaja.semver.Version; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -28,9 +27,7 @@ import java.nio.file.Path; import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static ro.fortsoft.pf4j.util.SemVerUtils.versionMatches; +import static org.junit.Assert.*; /** * @author Mario Franco @@ -38,6 +35,8 @@ import static ro.fortsoft.pf4j.util.SemVerUtils.versionMatches; */ public class ManifestPluginDescriptorFinderTest { + private VersionManager versionManager; + @Rule public TemporaryFolder testFolder = new TemporaryFolder(); @@ -70,6 +69,8 @@ public class ManifestPluginDescriptorFinderTest { pluginPath = testFolder.newFolder("test-plugin-6", "classes", "META-INF").toPath(); Files.write(pluginPath.resolve("extensions.idx"), "ro.fortsoft.pf4j.demo.hello.HelloPlugin$HelloGreeting".getBytes()); Files.write(pluginPath.resolve("MANIFEST.MF"), getPlugin6Manifest(), charset); + + versionManager = new DefaultVersionManager(); } /** @@ -85,22 +86,22 @@ public class ManifestPluginDescriptorFinderTest { assertEquals("test-plugin-1", plugin1.getPluginId()); assertEquals("Test Plugin 1", plugin1.getPluginDescription()); assertEquals("ro.fortsoft.pf4j.plugin.TestPlugin", plugin1.getPluginClass()); - assertEquals(Version.valueOf("0.0.1"), plugin1.getVersion()); + assertEquals("0.0.1", plugin1.getVersion()); assertEquals("Decebal Suiu", plugin1.getProvider()); assertEquals(2, plugin1.getDependencies().size()); assertEquals("test-plugin-2", plugin1.getDependencies().get(0).getPluginId()); assertEquals("test-plugin-3", plugin1.getDependencies().get(1).getPluginId()); assertEquals("~1.0", plugin1.getDependencies().get(1).getPluginVersionSupport()); assertEquals("Apache-2.0", plugin1.getLicense()); - assertTrue(versionMatches(plugin1.getRequires(), "1.0.0")); + assertTrue(versionManager.satisfies(plugin1.getRequires(), "1.0.0")); assertEquals("test-plugin-2", plugin2.getPluginId()); assertEquals("", plugin2.getPluginDescription()); assertEquals("ro.fortsoft.pf4j.plugin.TestPlugin", plugin2.getPluginClass()); - assertEquals(Version.valueOf("0.0.1"), plugin2.getVersion()); + assertEquals("0.0.1", plugin2.getVersion()); assertEquals("Decebal Suiu", plugin2.getProvider()); assertEquals(0, plugin2.getDependencies().size()); - assertTrue(versionMatches(plugin2.getRequires(),"1.0.0")); + assertTrue(versionManager.satisfies(plugin2.getRequires(), "1.0.0")); } /** diff --git a/pf4j/src/test/java/ro/fortsoft/pf4j/PropertiesPluginDescriptorFinderTest.java b/pf4j/src/test/java/ro/fortsoft/pf4j/PropertiesPluginDescriptorFinderTest.java index fa6666a..aa6d7c5 100644 --- a/pf4j/src/test/java/ro/fortsoft/pf4j/PropertiesPluginDescriptorFinderTest.java +++ b/pf4j/src/test/java/ro/fortsoft/pf4j/PropertiesPluginDescriptorFinderTest.java @@ -15,7 +15,6 @@ */ package ro.fortsoft.pf4j; -import com.github.zafarkhaja.semver.Version; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -29,10 +28,11 @@ import java.util.Arrays; import java.util.List; import static org.junit.Assert.*; -import static ro.fortsoft.pf4j.util.SemVerUtils.versionMatches; public class PropertiesPluginDescriptorFinderTest { + private VersionManager versionManager; + @Rule public TemporaryFolder testFolder = new TemporaryFolder(); @@ -60,6 +60,8 @@ public class PropertiesPluginDescriptorFinderTest { // no plugin id pluginPath = testFolder.newFolder("test-plugin-6").toPath(); Files.write(pluginPath.resolve("plugin.properties"), getPlugin6Properties(), charset); + + versionManager = new DefaultVersionManager(); } @Test @@ -72,7 +74,7 @@ public class PropertiesPluginDescriptorFinderTest { assertEquals("test-plugin-1", plugin1.getPluginId()); assertEquals("Test Plugin 1", plugin1.getPluginDescription()); assertEquals("ro.fortsoft.pf4j.plugin.TestPlugin", plugin1.getPluginClass()); - assertEquals(Version.valueOf("0.0.1"), plugin1.getVersion()); + assertEquals("0.0.1", plugin1.getVersion()); assertEquals("Decebal Suiu", plugin1.getProvider()); assertEquals(2, plugin1.getDependencies().size()); assertEquals("test-plugin-2", plugin1.getDependencies().get(0).getPluginId()); @@ -80,17 +82,17 @@ public class PropertiesPluginDescriptorFinderTest { assertEquals("~1.0", plugin1.getDependencies().get(1).getPluginVersionSupport()); assertEquals("Apache-2.0", plugin1.getLicense()); assertEquals(">=1", plugin1.getRequires()); - assertTrue(versionMatches(plugin1.getRequires(),"1.0.0")); - assertFalse(versionMatches(plugin1.getRequires(), "0.1.0")); + assertTrue(versionManager.satisfies(plugin1.getRequires(), "1.0.0")); + assertFalse(versionManager.satisfies(plugin1.getRequires(), "0.1.0")); assertEquals("test-plugin-2", plugin2.getPluginId()); assertEquals("", plugin2.getPluginDescription()); assertEquals("ro.fortsoft.pf4j.plugin.TestPlugin", plugin2.getPluginClass()); - assertEquals(Version.valueOf("0.0.1"), plugin2.getVersion()); + assertEquals("0.0.1", plugin2.getVersion()); assertEquals("Decebal Suiu", plugin2.getProvider()); assertEquals(0, plugin2.getDependencies().size()); assertEquals("*", plugin2.getRequires()); // Default is * - assertTrue(versionMatches(plugin2.getRequires(),"1.0.0")); + assertTrue(versionManager.satisfies(plugin2.getRequires(), "1.0.0")); } @Test(expected = PluginException.class) @@ -171,6 +173,7 @@ public class PropertiesPluginDescriptorFinderTest { return Arrays.asList(lines); } + private Path getPluginsRoot() { return testFolder.getRoot().toPath(); } diff --git a/pf4j/src/test/java/ro/fortsoft/pf4j/plugin/MockPluginManager.java b/pf4j/src/test/java/ro/fortsoft/pf4j/plugin/MockPluginManager.java index 23b1b34..139a0e8 100644 --- a/pf4j/src/test/java/ro/fortsoft/pf4j/plugin/MockPluginManager.java +++ b/pf4j/src/test/java/ro/fortsoft/pf4j/plugin/MockPluginManager.java @@ -26,6 +26,7 @@ import java.nio.file.Path; * Manager for testing */ public class MockPluginManager extends DefaultPluginManager { + private PluginDescriptorFinder finder = new DefaultPluginDescriptorFinder(new DefaultPluginClasspath()); public MockPluginManager() { @@ -46,4 +47,5 @@ public class MockPluginManager extends DefaultPluginManager { protected PluginDescriptorFinder createPluginDescriptorFinder() { return finder; } + } diff --git a/pf4j/src/test/java/ro/fortsoft/pf4j/util/FileUtilsTest.java b/pf4j/src/test/java/ro/fortsoft/pf4j/util/FileUtilsTest.java index 37f0d10..6b98549 100644 --- a/pf4j/src/test/java/ro/fortsoft/pf4j/util/FileUtilsTest.java +++ b/pf4j/src/test/java/ro/fortsoft/pf4j/util/FileUtilsTest.java @@ -22,12 +22,16 @@ import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.net.URI; -import java.nio.file.*; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Collections; import static org.junit.Assert.*; public class FileUtilsTest { + private Path zipFile; private Path tmpDir; private Path propsFile; diff --git a/pf4j/src/test/java/ro/fortsoft/pf4j/util/SemVerUtils.java b/pf4j/src/test/java/ro/fortsoft/pf4j/util/SemVerUtils.java deleted file mode 100644 index b5c94d1..0000000 --- a/pf4j/src/test/java/ro/fortsoft/pf4j/util/SemVerUtils.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2017 Decebal Suiu - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package ro.fortsoft.pf4j.util; - -import com.github.zafarkhaja.semver.Version; -import com.github.zafarkhaja.semver.expr.ExpressionParser; - -/** - * Utility for semantic version testing - */ -public class SemVerUtils { - public static boolean versionMatches(String expression, String systemVersion) { - return ExpressionParser.newInstance().parse(expression).interpret(Version.valueOf(systemVersion)); - } -} |