aboutsummaryrefslogtreecommitdiffstats
path: root/pf4j/src/test/java
diff options
context:
space:
mode:
authorDecebal Suiu <decebal.suiu@gmail.com>2017-07-12 21:48:41 +0300
committerGitHub <noreply@github.com>2017-07-12 21:48:41 +0300
commitc9bdd98e6df7c146377f8b7d56146bfae7d5a797 (patch)
treed603c7e10826384ca51e2256717f91fd0c07b485 /pf4j/src/test/java
parent49bd1f59964355ced04f97079d1349227b0f69f3 (diff)
downloadpf4j-c9bdd98e6df7c146377f8b7d56146bfae7d5a797.tar.gz
pf4j-c9bdd98e6df7c146377f8b7d56146bfae7d5a797.zip
Add VersionManager abstractization (breaking change) (#155)
Diffstat (limited to 'pf4j/src/test/java')
-rw-r--r--pf4j/src/test/java/ro/fortsoft/pf4j/DefaultPluginManagerTest.java17
-rw-r--r--pf4j/src/test/java/ro/fortsoft/pf4j/DefaultVersionManagerTest.java52
-rw-r--r--pf4j/src/test/java/ro/fortsoft/pf4j/DependencyResolverTest.java31
-rw-r--r--pf4j/src/test/java/ro/fortsoft/pf4j/LoadPluginsTest.java11
-rw-r--r--pf4j/src/test/java/ro/fortsoft/pf4j/ManifestPluginDescriptorFinderTest.java17
-rw-r--r--pf4j/src/test/java/ro/fortsoft/pf4j/PropertiesPluginDescriptorFinderTest.java17
-rw-r--r--pf4j/src/test/java/ro/fortsoft/pf4j/plugin/MockPluginManager.java2
-rw-r--r--pf4j/src/test/java/ro/fortsoft/pf4j/util/FileUtilsTest.java6
-rw-r--r--pf4j/src/test/java/ro/fortsoft/pf4j/util/SemVerUtils.java28
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));
- }
-}