You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ma...@apache.org on 2004/10/24 02:10:05 UTC

cvs commit: jakarta-commons/io/src/test/org/apache/commons/io/find FileFinderTest.java

martinc     2004/10/23 17:10:05

  Modified:    io/src/test/org/apache/commons/io FilenameUtilsTestCase.java
               io/src/test/org/apache/commons/io/find FileFinderTest.java
  Log:
  The tests were using explicit Unix-style path separators, whereas the utils
  themselves were using File.separator, so the tests failed on Windows. Now
  the tests also use File.separator, and work on Windows. The one tricky part
  is that paths for regex searches need to be escaped if the separator is a
  backslash.
  
  Revision  Changes    Path
  1.9       +7 -7      jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java
  
  Index: FilenameUtilsTestCase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- FilenameUtilsTestCase.java	13 Jun 2004 05:13:57 -0000	1.8
  +++ FilenameUtilsTestCase.java	24 Oct 2004 00:10:05 -0000	1.9
  @@ -208,9 +208,9 @@
                   { "README", "" }, 
                   { "domain.dot.com", "com" }, 
                   { "image.jpeg", "jpeg" },
  -                { "a.b/c", "" },
  -                { "a.b/c.txt", "txt" },
  -                { "a/b/c", "" },
  +                { "a.b" + File.separator + "c", "" },
  +                { "a.b" + File.separator + "c.txt", "txt" },
  +                { "a" + File.separator + "b" + File.separator + "c", "" },
           };
           for (int i = 0; i < tests.length; i++) {
               assertEquals(tests[i][1], FilenameUtils.getExtension(tests[i][0]));
  @@ -244,9 +244,9 @@
                   { "README", "README" }, 
                   { "domain.dot.com", "domain.dot" }, 
                   { "image.jpeg", "image" },
  -                { "a.b/c", "a.b/c" },
  -                { "a.b/c.txt", "a.b/c" },
  -                { "a/b/c", "a/b/c" },
  +                { "a.b" + File.separator + "c", "a.b" + File.separator + "c" },
  +                { "a.b" + File.separator + "c.txt", "a.b" + File.separator + "c" },
  +                { "a" + File.separator + "b" + File.separator + "c", "a" + File.separator + "b" + File.separator + "c" },
           };
   
           for (int i = 0; i < tests.length; i++) {
  
  
  
  1.3       +19 -5     jakarta-commons/io/src/test/org/apache/commons/io/find/FileFinderTest.java
  
  Index: FileFinderTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/find/FileFinderTest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FileFinderTest.java	22 Sep 2004 02:02:35 -0000	1.2
  +++ FileFinderTest.java	24 Oct 2004 00:10:05 -0000	1.3
  @@ -29,7 +29,7 @@
   
       private HashMap options;
       private FileFinder finder;
  -    private String dirStr = "src/test/find-data/";
  +    private String dirStr = "src" + File.separator + "test" + File.separator + "find-data" + File.separator;
       private File dir = new File(dirStr);
   
       public FileFinderTest(String name) {
  @@ -61,13 +61,13 @@
       }
   
       public void testFindPath() {
  -        options.put(Finder.PATH, dirStr+"path/dir/file");
  +        options.put(Finder.PATH, dirStr+"path" + File.separator + "dir" + File.separator + "file");
           File[] files = finder.find(new File(dir, "path"), options);
           assertEquals(1, files.length);
       }
   
       public void testFindIPath() {
  -        options.put(Finder.IPATH, dirStr+"PAth/dIR/fILe");
  +        options.put(Finder.IPATH, dirStr+"PAth" + File.separator + "dIR" + File.separator + "fILe");
           File[] files = finder.find(new File(dir, "path"), options);
           assertEquals(1, files.length);
       }
  @@ -79,13 +79,13 @@
       }
   
       public void testFindRegex() {
  -        options.put(Finder.REGEX, dirStr+"regex/f.*");
  +        options.put(Finder.REGEX, escapePath(dirStr+"regex" + File.separator + "f.*"));
           File[] files = finder.find(new File(dir, "regex"), options);
           assertEquals(3, files.length);
       }
   
       public void testFindIRegex() {
  -        options.put(Finder.IREGEX, dirStr+"REgeX/F.*");
  +        options.put(Finder.IREGEX, escapePath(dirStr+"REgeX" + File.separator + "F.*"));
           File[] files = finder.find(new File(dir, "regex"), options);
           assertEquals(3, files.length);
       }
  @@ -138,6 +138,20 @@
           options.put(Finder.CAN_READ, "false");
           File[] files = finder.find(new File(dir, "can_read"), options);
           assertEquals(0, files.length);
  +    }
  +
  +    private static String escapePath(String text) {
  +        String repl = "\\";
  +        String with = "\\\\";
  +
  +        StringBuffer buf = new StringBuffer(text.length());
  +        int start = 0, end = 0;
  +        while ((end = text.indexOf(repl, start)) != -1) {
  +            buf.append(text.substring(start, end)).append(with);
  +            start = end + repl.length();
  +        }
  +        buf.append(text.substring(start));
  +        return buf.toString();
       }
   
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org