antoine 2003/07/19 10:08:06 Modified: src/main/org/apache/tools/ant DirectoryScanner.java src/testcases/org/apache/tools/ant DirectoryScannerTest.java Log: Fix a problem introduced in the recent optimization of DirectoryScanner : under Windows, the case of the includedFiles and of the includedDirectories was influenced by the case used in the include patterns of the fileset. This change fixes it. I am using File.getCanonicalFile() because it is the only way I know to get the real case of a file under Windows. Revision Changes Path 1.49 +17 -0 ant/src/main/org/apache/tools/ant/DirectoryScanner.java Index: DirectoryScanner.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/DirectoryScanner.java,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- DirectoryScanner.java 18 Jul 2003 12:45:54 -0000 1.48 +++ DirectoryScanner.java 19 Jul 2003 17:08:06 -0000 1.49 @@ -66,6 +66,7 @@ import org.apache.tools.ant.types.selectors.SelectorScanner; import org.apache.tools.ant.types.selectors.SelectorUtils; import org.apache.tools.ant.util.FileUtils; +import org.apache.tools.ant.taskdefs.condition.Os; /** * Class for scanning a directory for files/directories which match certain @@ -694,6 +695,22 @@ String currentelement = (String) enum2.nextElement(); String originalpattern = (String) newroots.get(currentelement); File myfile = new File(basedir, currentelement); + // we need to call getCanonicalFile here for DOS systems + // the reason being that otherwise File will be influenced + // by the case of currentelement, which we want to avoid + if (Os.isFamily("dos") && myfile.exists()) { + try { + // getAbsoluteFile() is not enough here unfortunately + myfile = myfile.getCanonicalFile(); + } + catch (Exception ex) { + throw new BuildException(ex); + } + // the variable currentelement is actually telling what + // the scan results will contain + currentelement = fileUtils.removeLeadingPath(basedir, + myfile); + } if (!myfile.exists() && !isCaseSensitive) { File f = findFileCaseInsensitive(basedir, currentelement); if (f.exists()) { 1.17 +3 -18 ant/src/testcases/org/apache/tools/ant/DirectoryScannerTest.java Index: DirectoryScannerTest.java =================================================================== RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/DirectoryScannerTest.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- DirectoryScannerTest.java 19 Jul 2003 15:57:21 -0000 1.16 +++ DirectoryScannerTest.java 19 Jul 2003 17:08:06 -0000 1.17 @@ -120,11 +120,7 @@ ds.setBasedir(new File(getProject().getBaseDir(), "tmp")); ds.setIncludes(new String[] {"alpha/beta/gamma/GAMMA.XML"}); ds.scan(); - if (Os.isFamily("dos")) { - compareFiles(ds, new String[] {"alpha/beta/gamma/GAMMA.XML"}, new String[] {}); - } else { - compareFiles(ds, new String[] {}, new String[] {}); - } + compareFiles(ds, new String[] {}, new String[] {}); } public void testFullPathMatchesCaseInsensitive() { @@ -133,13 +129,8 @@ ds.setBasedir(new File(getProject().getBaseDir(), "tmp")); ds.setIncludes(new String[] {"alpha/beta/gamma/GAMMA.XML"}); ds.scan(); - if (Os.isFamily("dos")) { - compareFiles(ds, new String[] {"alpha/beta/gamma/GAMMA.XML"}, - new String[] {}); - } else { - compareFiles(ds, new String[] {"alpha/beta/gamma/gamma.xml"}, - new String[] {}); - } + compareFiles(ds, new String[] {"alpha/beta/gamma/gamma.xml"}, + new String[] {}); } public void test2ButCaseInsesitive() { @@ -148,15 +139,9 @@ ds.setIncludes(new String[] {"ALPHA/"}); ds.setCaseSensitive(false); ds.scan(); - if (Os.isFamily("dos")) { - compareFiles(ds, new String[] {"ALPHA/beta/beta.xml", - "ALPHA/beta/gamma/gamma.xml"}, - new String[] {"ALPHA", "ALPHA/beta", "ALPHA/beta/gamma"}); - } else { compareFiles(ds, new String[] {"alpha/beta/beta.xml", "alpha/beta/gamma/gamma.xml"}, new String[] {"alpha", "alpha/beta", "alpha/beta/gamma"}); - } } public void testAllowSymlinks() {
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]