You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by an...@apache.org on 2007/03/29 14:15:26 UTC
svn commit: r523681 - in /ant/core/trunk/src:
main/org/apache/tools/ant/util/FileUtils.java
tests/junit/org/apache/tools/ant/util/FileUtilsTest.java
Author: antoine
Date: Thu Mar 29 05:15:21 2007
New Revision: 523681
URL: http://svn.apache.org/viewvc?view=rev&rev=523681
Log:
adding a method to find wrong cased files
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java
ant/core/trunk/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java
Modified: ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java?view=diff&rev=523681&r1=523680&r2=523681
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java Thu Mar 29 05:15:21 2007
@@ -18,14 +18,7 @@
package org.apache.tools.ant.util;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
+import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DecimalFormat;
@@ -1239,6 +1232,36 @@
return UNIX_FILE_TIMESTAMP_GRANULARITY;
}
+ /**
+ * test whether a file or directory exists, with an error in the upper/lower case spelling of the name.
+ * Using this method is only interesting on case insensitive file systems (Windows).<br/>
+ * It will return true only if 3 conditions are met :
+ * <br/>
+ * <ul>
+ * <li>operating system is case insensitive</li>
+ * <li>file exists</li>
+ * <li>actual name from directory reading is different from the supplied argument</li>
+ * </ul>
+ * <br/>
+ * the purpose is to identify files or directories on Windows environments whose case is not what is expected.<br/>
+ * Possibly to rename them afterwards to the desired upper/lowercase combination.
+ * <br/>
+ * @param localFile file to test
+ * @return true if the file exists and the case of the actual file is not the case of the parameter
+ */
+ public boolean hasErrorInCase(File localFile) {
+ if (!localFile.exists()) {
+ return false;
+ }
+ final String localFileName = localFile.getName();
+ FilenameFilter ff = new FilenameFilter () {
+ public boolean accept(File dir, String name) {
+ return name.equalsIgnoreCase(localFileName) && (!name.equals(localFileName));
+ }
+ };
+ String[] names = localFile.getParentFile().list(ff);
+ return names!=null && names.length==1;
+ }
/**
* Returns true if the source is older than the dest.
* If the dest file does not exist, then the test returns false; it is
Modified: ant/core/trunk/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java?view=diff&rev=523681&r1=523680&r2=523681
==============================================================================
--- ant/core/trunk/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java (original)
+++ ant/core/trunk/src/tests/junit/org/apache/tools/ant/util/FileUtilsTest.java Thu Mar 29 05:15:21 2007
@@ -544,6 +544,20 @@
!FILE_UTILS.isUpToDate(firstTime,-1L));
}
+ public void testHasErrorInCase() {
+ File tempFolder = new File(System.getProperty("java.io.tmpdir"));
+ File wellcased = FILE_UTILS.createTempFile("alpha", "beta", tempFolder);
+ String s = wellcased.getName().toUpperCase();
+ File wrongcased = new File(tempFolder, s);
+ if (Os.isFamily("dos")) {
+ assertTrue(FILE_UTILS.hasErrorInCase(wrongcased));
+ assertFalse(FILE_UTILS.hasErrorInCase(wellcased));
+ } else {
+ assertFalse(FILE_UTILS.hasErrorInCase(wrongcased));
+ assertFalse(FILE_UTILS.hasErrorInCase(wellcased));
+ }
+
+ }
public void testGetDefaultEncoding() {
// This just tests that the function does not blow up
FILE_UTILS.getDefaultEncoding();
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org