Browse Source

Polishing #321

pf4j_3
decebals 6 years ago
parent
commit
a0a645ffdd
  1. 92
      pf4j/src/test/java/org/pf4j/LegacyExtensionFinderTest.java

92
pf4j/src/test/java/org/pf4j/LegacyExtensionFinderTest.java

@ -1,69 +1,73 @@
/*
* Copyright (C) 2012-present the original author or authors.
*
* 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 org.pf4j;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledOnOs;
import org.junit.jupiter.api.io.TempDir;
import org.pf4j.plugin.PluginJar;
import org.pf4j.plugin.TestExtension;
import org.pf4j.plugin.TestPlugin;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.pf4j.plugin.PluginJar;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.condition.OS.WINDOWS;
public class LegacyExtensionFinderTest {
@TempDir
public Path pluginsPath;
public static class TestPlugin extends Plugin {
public TestPlugin(PluginWrapper wrapper) {
super(wrapper);
}
}
@Extension
public static class TestExtension implements ExtensionPoint {
}
private static boolean systemIsWindows() {
String os = System.getProperty("os.name").toLowerCase(Locale.ENGLISH);
return os.startsWith("win");
}
Path pluginsPath;
@Test
public void shouldUnlockFileAfterReadingExtensionsFromPlugin() throws IOException, PluginException {
assumeTrue(systemIsWindows());
final Path pluginJarPath = pluginsPath.resolve("test-plugin.jar");
PluginJar pluginJar = new PluginJar.Builder(pluginJarPath, "test-plugin")
@EnabledOnOs(WINDOWS)
public void shouldUnlockFileAfterReadingExtensionsFromPlugin() throws Exception {
PluginJar pluginJar = new PluginJar.Builder(pluginsPath.resolve("test-plugin.jar"), "test-plugin")
.pluginClass(TestPlugin.class.getName())
.pluginVersion("1.2.3")
.extension(TestExtension.class.getName())
.build();
JarPluginManager pluginManager = new JarPluginManager(pluginsPath);
assertTrue(pluginJar.file().exists());
PluginManager pluginManager = new JarPluginManager(pluginsPath);
pluginManager.loadPlugins();
assertEquals(1, pluginManager.getPlugins().size());
LegacyExtensionFinder extensionFinder = new LegacyExtensionFinder(pluginManager);
Map<String, Set<String>> pluginStorages = extensionFinder.readPluginsStorages();
pluginManager.unloadPlugin(pluginJar.pluginId());
boolean fileDeleted = pluginJarPath.toFile().delete();
Map<String, Set<String>> pluginsStorages = extensionFinder.readPluginsStorages();
assertNotNull(pluginsStorages);
assertThat(pluginStorages, is(notNullValue()));
assertThat(pluginStorages.get(pluginJar.pluginId()), is(notNullValue()));
assertThat(pluginStorages.get(pluginJar.pluginId()).size(), is(equalTo(1)));
assertThat(pluginStorages.get(pluginJar.pluginId()),
contains("org.pf4j.LegacyExtensionFinderTest$TestExtension"));
assertThat(fileDeleted, is(equalTo(true)));
pluginManager.unloadPlugin(pluginJar.pluginId());
boolean fileDeleted = pluginJar.file().delete();
Set<String> pluginStorages = pluginsStorages.get(pluginJar.pluginId());
assertNotNull(pluginStorages);
assertEquals(1, pluginStorages.size());
assertThat(pluginStorages, contains(TestExtension.class.getName()));
assertTrue(fileDeleted);
assertFalse(pluginJar.file().exists());
}
}

Loading…
Cancel
Save