Add and ignore
testFileBasedConfigurationBuilder.testGetConfigurationLoadFromJarFile
based on https://github.com/apache/commons-configuration/pull/76
Fails on Windows:
java.lang.AssertionError: Unable to clean up temporary folder
C:\Users\ggregory\AppData\Local\Temp\junit4296513623415900710
at org.junit.Assert.fail(Assert.java:89)
at org.junit.rules.TemporaryFolder.delete(TemporaryFolder.java:274)
at org.junit.rules.TemporaryFolder.after(TemporaryFolder.java:138)
at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:59)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
diff --git a/src/test/java/org/apache/commons/configuration2/builder/TestFileBasedConfigurationBuilder.java b/src/test/java/org/apache/commons/configuration2/builder/TestFileBasedConfigurationBuilder.java
index 591f7d1..318760f 100644
--- a/src/test/java/org/apache/commons/configuration2/builder/TestFileBasedConfigurationBuilder.java
+++ b/src/test/java/org/apache/commons/configuration2/builder/TestFileBasedConfigurationBuilder.java
@@ -18,6 +18,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
@@ -27,7 +28,12 @@
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.InputStream;
import java.io.Writer;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
@@ -45,6 +51,7 @@
import org.apache.commons.configuration2.io.FileLocator;
import org.apache.commons.configuration2.io.FileLocatorUtils;
import org.apache.commons.configuration2.io.HomeDirectoryLocationStrategy;
+import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -60,7 +67,7 @@
/** Helper object for managing temporary files. */
@Rule
- public TemporaryFolder folder = new TemporaryFolder();
+ public TemporaryFolder folder = TemporaryFolder.builder().assureDeletion().build();
/**
* Creates a test properties file with the given property value
@@ -137,6 +144,30 @@
}
/**
+ * Tests whether a configuration is loaded from a JAR file if a location is
+ * provided.
+ */
+ @Test
+ @Ignore
+ public void testGetConfigurationLoadFromJarFile()
+ throws ConfigurationException, IOException
+ {
+ URL jarResourceUrl = getClass().getClassLoader().getResource("org/apache/commons/configuration2/test.jar");
+ assertNotNull(jarResourceUrl);
+ final Path testJar = Paths.get(folder.getRoot().getAbsolutePath(), "test.jar");
+ try (final InputStream inputStream = jarResourceUrl.openStream()) {
+ Files.copy(inputStream, testJar);
+ }
+ URL url = new URL("jar:" + testJar.toUri() + "!/configuration.properties");
+
+ final FileBasedConfigurationBuilder<PropertiesConfiguration> builder = new FileBasedConfigurationBuilder<>(
+ PropertiesConfiguration.class).configure(new FileBasedBuilderParametersImpl().setURL(url));
+ final PropertiesConfiguration config = builder.getConfiguration();
+ assertEquals("Not read from file", 1, config.getInt(PROP));
+ assertSame("FileHandler not initialized", config, builder.getFileHandler().getContent());
+ }
+
+ /**
* Tests that the location in the FileHandler remains the same if the
* builder's result is reset.
*/
diff --git a/src/test/resources/org/apache/commons/configuration2/test.jar b/src/test/resources/org/apache/commons/configuration2/test.jar
new file mode 100644
index 0000000..2570824
--- /dev/null
+++ b/src/test/resources/org/apache/commons/configuration2/test.jar
Binary files differ