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]