You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2010/10/30 20:51:39 UTC

svn commit: r1029155 - /commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestFileConfiguration.java

Author: oheger
Date: Sat Oct 30 18:51:39 2010
New Revision: 1029155

URL: http://svn.apache.org/viewvc?rev=1029155&view=rev
Log:
Improved handling of temporary test files. (ported from trunk)

Modified:
    commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestFileConfiguration.java

Modified: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestFileConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestFileConfiguration.java?rev=1029155&r1=1029154&r2=1029155&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestFileConfiguration.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestFileConfiguration.java Sat Oct 30 18:51:39 2010
@@ -24,6 +24,8 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.net.URL;
+import java.util.Collection;
+import java.util.LinkedList;
 import java.util.Properties;
 
 import junit.framework.TestCase;
@@ -44,9 +46,82 @@ public class TestFileConfiguration exten
     /** Constant for a test file.*/
     private static final File TEST_FILE = ConfigurationAssert.getTestFile(TEST_FILENAME);
 
+    /** Constant for a test output file. */
+    private static final File OUT_FILE = new File(
+            "target/test-resources/foo/bar/test.properties");
+
     /** Constant for the name of a resource to be resolved.*/
     private static final String RESOURCE_NAME = "config/deep/deeptest.properties";
 
+    /** A list with temporary files created during a test case. */
+    private Collection<File> tempFiles = new LinkedList<File>();
+
+    /**
+     * Initializes the test environment. This implementation ensures that the
+     * test output file does not exist.
+     */
+    @Override
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        removeOutFile();
+    }
+
+    /**
+     * Performs cleanup after a test case. This implementation removes temporary
+     * files that have been created.
+     */
+    @Override
+    protected void tearDown() throws Exception
+    {
+        for(File file : tempFiles)
+        {
+            removeFile(file);
+        }
+        removeOutFile();
+
+        super.tearDown();
+    }
+
+    /**
+     * Adds a temporary file used by a test case. This method removes the file
+     * if it already exists. It is then added to a list so that it is removed at
+     * the end of the test.
+     *
+     * @param file the temporary file
+     */
+    private void addTemporaryFile(File file)
+    {
+        removeFile(file);
+        tempFiles.add(file);
+    }
+
+    /**
+     * Removes a file if it exists.
+     *
+     * @param file the file to be removed
+     */
+    private static void removeFile(File file)
+    {
+        if (file.exists())
+        {
+            assertTrue("Cannot remove file: " + file, file.delete());
+        }
+    }
+
+    /**
+     * Removes the test output file if it exists. Its parent directories are
+     * also removed.
+     */
+    private static void removeOutFile()
+    {
+        removeFile(OUT_FILE);
+        File parent = OUT_FILE.getParentFile();
+        removeFile(parent);
+        parent = parent.getParentFile();
+        removeFile(parent);
+    }
+
     public void testSetURL() throws Exception
     {
         // http URL
@@ -97,54 +172,29 @@ public class TestFileConfiguration exten
 
     public void testCreateFile1() throws Exception
     {
-        File file = new File("target/test-resources/foo/bar/test.properties");
-        if (file.exists())
-        {
-            file.delete();
-            file.getParentFile().delete();
-        }
-
-        assertFalse("The file should not exist", file.exists());
+        assertFalse("The file should not exist", OUT_FILE.exists());
 
-        FileConfiguration config = new PropertiesConfiguration(file);
+        FileConfiguration config = new PropertiesConfiguration(OUT_FILE);
         config.save();
 
-        assertTrue("The file doesn't exist", file.exists());
+        assertTrue("The file doesn't exist", OUT_FILE.exists());
     }
 
     public void testCreateFile2() throws Exception
     {
-        File file = new File("target/test-resources/foo/bar/test.properties");
-        if (file.exists())
-        {
-            file.delete();
-            file.getParentFile().delete();
-        }
-
-        assertFalse("The file should not exist", file.exists());
-
         FileConfiguration config = new PropertiesConfiguration();
-        config.setFile(file);
+        config.setFile(OUT_FILE);
         config.save();
 
-        assertTrue("The file doesn't exist", file.exists());
+        assertTrue("The file doesn't exist", OUT_FILE.exists());
     }
 
     public void testCreateFile3() throws Exception
     {
-        File file = new File("target/test-resources/foo/bar/test.properties");
-        if (file.exists())
-        {
-            file.delete();
-            file.getParentFile().delete();
-        }
-
-        assertFalse("The file should not exist", file.exists());
-
         FileConfiguration config = new PropertiesConfiguration();
-        config.save(file);
+        config.save(OUT_FILE);
 
-        assertTrue("The file doesn't exist", file.exists());
+        assertTrue("The file doesn't exist", OUT_FILE.exists());
     }
 
     /**
@@ -156,43 +206,31 @@ public class TestFileConfiguration exten
     public void testWithConfigurationFactory() throws Exception
     {
         File file = ConfigurationAssert.getOutFile("testFileConfiguration.properties");
+        addTemporaryFile(file);
 
-        if (file.exists())
-        {
-            assertTrue("File cannot be deleted", file.delete());
-        }
-
-        try
+        DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
+        builder.setURL(ConfigurationAssert
+                .getTestFile("testDigesterConfiguration2.xml").toURI().toURL());
+        CombinedConfiguration cc =
+                (CombinedConfiguration) builder.getConfiguration();
+        PropertiesConfiguration config = null;
+        for (int i = 0; config == null; i++)
         {
-            DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
-            builder.setURL(ConfigurationAssert.getTestFile("testDigesterConfiguration2.xml").toURI().toURL());
-            CombinedConfiguration cc = (CombinedConfiguration) builder.getConfiguration();
-            PropertiesConfiguration config = null;
-            for (int i = 0; config == null; i++)
+            if (cc.getConfiguration(i) instanceof PropertiesConfiguration)
             {
-                if (cc.getConfiguration(i) instanceof PropertiesConfiguration)
-                {
-                    config = (PropertiesConfiguration) cc.getConfiguration(i);
-                }
+                config = (PropertiesConfiguration) cc.getConfiguration(i);
             }
+        }
 
-            config.setProperty("test", "yes");
-            config.save(file);
-            assertTrue(file.exists());
-            config = new PropertiesConfiguration();
-            config.setFile(file);
-            config.load();
+        config.setProperty("test", "yes");
+        config.save(file);
+        assertTrue(file.exists());
+        config = new PropertiesConfiguration();
+        config.setFile(file);
+        config.load();
 
-            assertEquals("yes", config.getProperty("test"));
-            assertEquals("masterOfPost", config.getProperty("mail.account.user"));
-        }
-        finally
-        {
-            if (file.exists())
-            {
-                assertTrue("File could not be deleted", file.delete());
-            }
-        }
+        assertEquals("yes", config.getProperty("test"));
+        assertEquals("masterOfPost", config.getProperty("mail.account.user"));
     }
 
     /**
@@ -236,6 +274,7 @@ public class TestFileConfiguration exten
             String path = System.getProperties().getProperty("user.home");
             File homeDir = new File(path);
             tempFile = File.createTempFile("CONF", null, homeDir);
+            tempFiles.add(tempFile);
             String fileName = tempFile.getName();
             Properties props = new Properties();
             props.setProperty("1", "one");
@@ -279,10 +318,6 @@ public class TestFileConfiguration exten
                     ioex.printStackTrace();
                 }
             }
-            if (tempFile.exists())
-            {
-                assertTrue(tempFile.delete());
-            }
         }
     }
 
@@ -293,6 +328,7 @@ public class TestFileConfiguration exten
     public void testReloadingWithAutoSave() throws Exception
     {
         File configFile = ConfigurationAssert.getOutFile(TEST_FILENAME);
+        addTemporaryFile(configFile);
         PrintWriter out = null;
 
         try
@@ -317,10 +353,6 @@ public class TestFileConfiguration exten
             {
                 out.close();
             }
-            if (configFile.exists())
-            {
-                assertTrue(configFile.delete());
-            }
         }
     }
 
@@ -332,14 +364,13 @@ public class TestFileConfiguration exten
     {
         File path = ConfigurationAssert.getOutFile("path with spaces");
         File confFile = new File(path, "config-test.properties");
+        addTemporaryFile(confFile);
+        addTemporaryFile(path);
         PrintWriter out = null;
 
         try
         {
-            if (!path.exists())
-            {
-                assertTrue(path.mkdir());
-            }
+            assertTrue(path.mkdir());
             out = new PrintWriter(new FileWriter(confFile));
             out.println("saved = false");
             out.close();
@@ -364,14 +395,6 @@ public class TestFileConfiguration exten
             {
                 out.close();
             }
-            if (confFile.exists())
-            {
-                assertTrue(confFile.delete());
-            }
-            if (path.exists())
-            {
-                assertTrue(path.delete());
-            }
         }
     }
 
@@ -384,6 +407,7 @@ public class TestFileConfiguration exten
         File saveFile = ConfigurationAssert.getOutFile("test+config.properties")
                 .getAbsoluteFile();
         saveFile.createNewFile();
+        tempFiles.add(saveFile);
         try
         {
             FileConfiguration config = new PropertiesConfiguration(saveFile);