Author: scolebourne
Date: Tue Aug 29 13:54:47 2006
New Revision: 438209

URL: http://svn.apache.org/viewvc?rev=438209&view=rev
Log:
IO-91 - FileSystemUtils.freeSpace deprecated, replaced by freeSpaceKb
Document freeSpace not working with SunOS 5
info from Magnus Grimsell

Modified:
    jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt
    
jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/FileSystemUtils.java
    
jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/FileSystemUtilsTestCase.java

Modified: jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt?rev=438209&r1=438208&r2=438209&view=diff
==============================================================================
--- jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt (original)
+++ jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt Tue Aug 29 13:54:47 2006
@@ -29,6 +29,12 @@
 - WildcardFilter deprecated, replaced by WildcardFileFilter
   - old class only accepted files, thus had a confusing dual purpose
 
+- FileSystemUtils.freeSpace deprecated, replaced by freeSpaceKb
+  - freeSpace returns a result that varies by operating system and
+    thus isn't that useful
+  - freeSpaceKb returns much better and more consistent results
+  - freeSpaceKb existed in v1.2, so this is a gentle cutover
+
 
 Bug fixes from 1.2
 ------------------
@@ -41,6 +47,9 @@
 - FileSystemUtils.freeSpace/freeSpaceKb [IO-90]
   - Avoid infinite looping in Windows
   - Catch more errors with nice messages
+
+- FileSystemUtils.freeSpace [IO-91]
+  - This is now documented not to work on SunOS 5
 
 
 Enhancements from 1.2

Modified: 
jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/FileSystemUtils.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/FileSystemUtils.java?rev=438209&r1=438208&r2=438209&view=diff
==============================================================================
--- 
jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/FileSystemUtils.java
 (original)
+++ 
jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/FileSystemUtils.java
 Tue Aug 29 13:54:47 2006
@@ -110,11 +110,11 @@
      * the command line.
      * This method does not normalize the result, and typically returns
      * bytes on Windows, 512 byte units on OS X and kilobytes on Unix.
+     * As this is not very useful, this method is deprecated in favour
+     * of [EMAIL PROTECTED] #freeSpaceKb(String)} which returns a result in 
kilobytes.
      * <p>
-     * See also [EMAIL PROTECTED] #freeSpaceKb(String)} for a better 
implementation
-     * which normalizes to kilobytes.
-     * <p>
-     * Note that some OS's are NOT currently supported, including OS/390.
+     * Note that some OS's are NOT currently supported, including OS/390
+     * and SunOS 5. (SunOS is supported by <code>freeSpaceKb</code>.)
      * <pre>
      * FileSystemUtils.freeSpace("C:");       // Windows
      * FileSystemUtils.freeSpace("/volume");  // *nix
@@ -127,6 +127,9 @@
      * @throws IllegalArgumentException if the path is invalid
      * @throws IllegalStateException if an error occurred in initialisation
      * @throws IOException if an error occurs when finding the free space
+     * @since Commons IO 1.1, enhanced OS support in 1.2 and 1.3
+     * @deprecated Use freeSpaceKb(String)
+     *  Deprecated from 1.3, may be removed in 2.0
      */
     public static long freeSpace(String path) throws IOException {
         return INSTANCE.freeSpaceOS(path, OS, false);
@@ -136,20 +139,26 @@
     /**
      * Returns the free space on a drive or volume in kilobytes by invoking
      * the command line.
-     * Note that some OS's are NOT currently supported, including OS/390.
      * <pre>
      * FileSystemUtils.freeSpaceKb("C:");       // Windows
      * FileSystemUtils.freeSpaceKb("/volume");  // *nix
      * </pre>
      * The free space is calculated via the command line.
      * It uses 'dir /-c' on Windows, 'df -kP' on AIX/HP-UX and 'df -k' on 
other Unix.
+     * <p>
+     * In order to work, you must be running Windows, or have a implementation 
of
+     * Unix df that supports GNU format when passed -k (or -kP). If you are 
going
+     * to rely on this code, please check that it works on your OS by running
+     * some simple tests to compare the command line with the output from this 
class.
+     * If your operating system isn't supported, please raise a JIRA call 
detailing
+     * the exact result from df -k and as much other detail as possible, 
thanks.
      *
      * @param path  the path to get free space for, not null, not empty on Unix
      * @return the amount of free drive space on the drive or volume in 
kilobytes
      * @throws IllegalArgumentException if the path is invalid
      * @throws IllegalStateException if an error occurred in initialisation
      * @throws IOException if an error occurs when finding the free space
-     * @since Commons IO 1.2
+     * @since Commons IO 1.2, enhanced OS support in 1.3
      */
     public static long freeSpaceKb(String path) throws IOException {
         return INSTANCE.freeSpaceOS(path, OS, true);

Modified: 
jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/FileSystemUtilsTestCase.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/FileSystemUtilsTestCase.java?rev=438209&r1=438208&r2=438209&view=diff
==============================================================================
--- 
jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/FileSystemUtilsTestCase.java
 (original)
+++ 
jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/FileSystemUtilsTestCase.java
 Tue Aug 29 13:54:47 2006
@@ -296,20 +296,53 @@
         
     }
 
-    public void testGetFreeSpaceUnix_String_NormalResponse() throws Exception {
+    public void testGetFreeSpaceUnix_String_NormalResponseLinux() throws 
Exception {
+        // from Sourceforge 'GNU bash, version 2.05b.0(1)-release 
(i386-redhat-linux-gnu)'
         String lines =
             "Filesystem           1K-blocks      Used Available Use% Mounted 
on\n" +
-            "xxx:/home/users/s     14428928  12956424   1472504  90% 
/home/users/s";
+            "/dev/xxx                497944    308528    189416  62% /";
         FileSystemUtils fsu = new MockFileSystemUtils(0, lines);
-        assertEquals(1472504L, fsu.freeSpaceUnix("/home/users/s", false, 
false));
+        assertEquals(189416L, fsu.freeSpaceUnix("/", false, false));
     }
 
-    public void testGetFreeSpaceUnix_String_NormalResponseKb() throws 
Exception {
+    public void testGetFreeSpaceUnix_String_NormalResponseFreeBSD() throws 
Exception {
+        // from Apache 'FreeBSD 6.1-RELEASE (SMP-turbo)'
+        String lines =
+            "Filesystem  1K-blocks      Used    Avail Capacity  Mounted on\n" +
+            "/dev/xxxxxx    128990    102902    15770    87%    /";
+        FileSystemUtils fsu = new MockFileSystemUtils(0, lines);
+        assertEquals(15770L, fsu.freeSpaceUnix("/", false, false));
+    }
+
+    //-----------------------------------------------------------------------
+    public void testGetFreeSpaceUnix_String_NormalResponseKbLinux() throws 
Exception {
+        // from Sourceforge 'GNU bash, version 2.05b.0(1)-release 
(i386-redhat-linux-gnu)'
+        // df, df -k and df -kP are all identical
         String lines =
             "Filesystem           1K-blocks      Used Available Use% Mounted 
on\n" +
-            "xxx:/home/users/s     14428928  12956424   1472504  90% 
/home/users/s";
+            "/dev/xxx                497944    308528    189416  62% /";
+        FileSystemUtils fsu = new MockFileSystemUtils(0, lines);
+        assertEquals(189416L, fsu.freeSpaceUnix("/", true, false));
+    }
+
+    public void testGetFreeSpaceUnix_String_NormalResponseKbFreeBSD() throws 
Exception {
+        // from Apache 'FreeBSD 6.1-RELEASE (SMP-turbo)'
+        // df and df -k are identical, but df -kP uses 512 blocks (not 
relevant as not used)
+        String lines =
+            "Filesystem  1K-blocks      Used    Avail Capacity  Mounted on\n" +
+            "/dev/xxxxxx    128990    102902    15770    87%    /";
+        FileSystemUtils fsu = new MockFileSystemUtils(0, lines);
+        assertEquals(15770L, fsu.freeSpaceUnix("/", true, false));
+    }
+
+    public void testGetFreeSpaceUnix_String_NormalResponseKbSolaris() throws 
Exception {
+        // from IO-91 - ' SunOS et 5.10 Generic_118822-25 sun4u sparc 
SUNW,Ultra-4'
+        // non-kb response does not contain free space - see IO-91
+        String lines =
+            "Filesystem            kbytes    used   avail capacity  Mounted 
on\n" +
+            "/dev/dsk/x0x0x0x0    1350955  815754  481163    63%";
         FileSystemUtils fsu = new MockFileSystemUtils(0, lines);
-        assertEquals(1472504L, fsu.freeSpaceUnix("/home/users/s", true, 
false));
+        assertEquals(481163L, fsu.freeSpaceUnix("/dev/dsk/x0x0x0x0", true, 
false));
     }
 
     public void testGetFreeSpaceUnix_String_LongResponse() throws Exception {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to