antoine     2003/06/28 07:18:40

  Modified:    src/testcases/org/apache/tools/ant/util FileUtilsTest.java
  Log:
  Make FileUtilsTest pass under cygwin
  I found doing this how to tell whether one is running under cygwin
  if the first letter (drive letter) of System.getProperty("user.dir")
  is lower case then one is under cygwin
  
  Revision  Changes    Path
  1.19      +31 -8     
ant/src/testcases/org/apache/tools/ant/util/FileUtilsTest.java
  
  Index: FileUtilsTest.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/testcases/org/apache/tools/ant/util/FileUtilsTest.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- FileUtilsTest.java        24 Jun 2003 16:07:26 -0000      1.18
  +++ FileUtilsTest.java        28 Jun 2003 14:18:40 -0000      1.19
  @@ -79,7 +79,7 @@
   
       public void setUp() {
           fu = FileUtils.newFileUtils();
  -        // Windows adds the drive letter in uppercase, unless you run Cygnus
  +        // Windows adds the drive letter in uppercase, unless you run Cygwin
           root = new File(File.separator).getAbsolutePath().toUpperCase();
       }
   
  @@ -408,9 +408,9 @@
                                                    new File("c:\\foo\\bar")));
           assertEquals("bar", fu.removeLeadingPath(new File("c:\\foo\\"),
                                                    new File("c:\\foo\\bar")));
  -        assertEquals(fu.normalize("/bar").getAbsolutePath(),
  +        assertEqualsIgnoreDriveCase(fu.normalize("/bar").getAbsolutePath(),
                        fu.removeLeadingPath(new File("/foo"), new 
File("/bar")));
  -        assertEquals(fu.normalize("/foobar").getAbsolutePath(),
  +        
assertEqualsIgnoreDriveCase(fu.normalize("/foobar").getAbsolutePath(),
                        fu.removeLeadingPath(new File("/foo"), new 
File("/foobar")));
           // bugzilla report 19979
           assertEquals("", fu.removeLeadingPath(new File("/foo/bar"),
  @@ -436,7 +436,13 @@
               dosRoot = "";
           }
           if (Os.isFamily("dos")) {
  -            assertEquals("file:///C:/foo", fu.toURI("c:\\foo"));
  +            assertEquals("file:///"+ dosRoot + "foo", fu.toURI("c:\\foo"));
  +        }
  +        if (Os.isFamily("dos")) {
  +            // this amounts to : are we under cygwin ?
  +            if 
(Character.isLowerCase(System.getProperty("user.dir").charAt(0))) {
  +                dosRoot = "c:/";
  +            }
           }
           assertEquals("file:///" + dosRoot + "foo", fu.toURI("/foo"));
           assertEquals("file:./foo",  fu.toURI("./foo"));
  @@ -453,13 +459,13 @@
        */
       public void testFromURI() {
           if (Os.isFamily("dos")) {
  -            assertEquals("C:\\foo", fu.fromURI("file:///c:/foo"));
  +            assertEqualsIgnoreDriveCase("C:\\foo", 
fu.fromURI("file:///c:/foo"));
           }
  -        assertEquals(localize("/foo"), fu.fromURI("file:///foo"));
  +        assertEqualsIgnoreDriveCase(localize("/foo"), 
fu.fromURI("file:///foo"));
           assertEquals("." + File.separator + "foo",
                        fu.fromURI("file:./foo"));
  -        assertEquals(localize("/foo bar"), fu.fromURI("file:///foo%20bar"));
  -        assertEquals(localize("/foo#bar"), fu.fromURI("file:///foo%23bar"));
  +        assertEqualsIgnoreDriveCase(localize("/foo bar"), 
fu.fromURI("file:///foo%20bar"));
  +        assertEqualsIgnoreDriveCase(localize("/foo#bar"), 
fu.fromURI("file:///foo%23bar"));
       }
   
       /**
  @@ -468,5 +474,22 @@
       private String localize(String path) {
           path = root + path.substring(1);
           return path.replace('\\', File.separatorChar).replace('/', 
File.separatorChar);
  +    }
  +    /**
  +     * convenience method
  +     * normalize brings the drive in uppercase
  +     * the drive letter is in lower case under cygwin
  +     * calling this method allows tests where normalize is called to pass 
under cygwin
  +     */
  +    private void assertEqualsIgnoreDriveCase(String s1, String s2) {
  +        if (Os.isFamily("dos") && s1.length()>=1 && s2.length()>=1) {
  +            StringBuffer sb1= new StringBuffer(s1);
  +            StringBuffer sb2= new StringBuffer(s2);
  +            sb1.setCharAt(0,Character.toUpperCase(s1.charAt(0)));
  +            sb2.setCharAt(0,Character.toUpperCase(s2.charAt(0)));
  +            assertEquals(sb1.toString(),sb2.toString());
  +        }   else {
  +            assertEquals(s1,s2);
  +        }
       }
   }
  
  
  

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

Reply via email to