Return-Path: Delivered-To: apmail-jakarta-ant-dev-archive@jakarta.apache.org Received: (qmail 9719 invoked by uid 500); 8 Aug 2001 09:02:58 -0000 Mailing-List: contact ant-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk Reply-To: ant-dev@jakarta.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list ant-dev@jakarta.apache.org Received: (qmail 9710 invoked by uid 500); 8 Aug 2001 09:02:58 -0000 Delivered-To: apmail-jakarta-ant-cvs@apache.org Date: 8 Aug 2001 09:01:11 -0000 Message-ID: <20010808090111.66988.qmail@icarus.apache.org> From: bodewig@apache.org To: jakarta-ant-cvs@apache.org Subject: cvs commit: jakarta-ant/src/testcases/org/apache/tools/ant ProjectTest.java X-Spam-Rating: h31.sny.collab.net 1.6.2 0/1000/N bodewig 01/08/08 02:01:11 Modified: src/testcases/org/apache/tools/ant ProjectTest.java Log: Testcase for Project.resolveFile Revision Changes Path 1.4 +61 -0 jakarta-ant/src/testcases/org/apache/tools/ant/ProjectTest.java Index: ProjectTest.java =================================================================== RCS file: /home/cvs/jakarta-ant/src/testcases/org/apache/tools/ant/ProjectTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ProjectTest.java 2001/01/03 14:18:48 1.3 +++ ProjectTest.java 2001/08/08 09:01:11 1.4 @@ -56,6 +56,8 @@ import org.apache.tools.ant.types.*; +import java.io.File; + import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; @@ -87,5 +89,64 @@ assert("PatternSet", p.createDataType("patternset") instanceof PatternSet); assert("Path", p.createDataType("path") instanceof Path); + } + + public void testResolveFile() { + /* + * Start with simple absolute file names. + */ + assertEquals(File.separator, + p.resolveFile("/", null).getPath()); + assertEquals(File.separator, + p.resolveFile("\\", null).getPath()); + + /* + * throw in drive letters + */ + String driveSpec = "C:"; + assertEquals(driveSpec + "\\", + p.resolveFile(driveSpec + "/", null).getPath()); + assertEquals(driveSpec + "\\", + p.resolveFile(driveSpec + "\\", null).getPath()); + String driveSpecLower = "c:"; + assertEquals(driveSpec + "\\", + p.resolveFile(driveSpecLower + "/", null).getPath()); + assertEquals(driveSpec + "\\", + p.resolveFile(driveSpecLower + "\\", null).getPath()); + /* + * promised to eliminate consecutive slashes after drive letter. + */ + assertEquals(driveSpec + "\\", + p.resolveFile(driveSpec + "/////", null).getPath()); + assertEquals(driveSpec + "\\", + p.resolveFile(driveSpec + "\\\\\\\\\\\\", null).getPath()); + + /* + * Now test some relative file name magic. + */ + assertEquals(localize("/1/2/3/4"), + p.resolveFile("4", new File(localize("/1/2/3"))).getPath()); + assertEquals(localize("/1/2/3/4"), + p.resolveFile("./4", new File(localize("/1/2/3"))).getPath()); + assertEquals(localize("/1/2/3/4"), + p.resolveFile(".\\4", new File(localize("/1/2/3"))).getPath()); + assertEquals(localize("/1/2/3/4"), + p.resolveFile("./.\\4", new File(localize("/1/2/3"))).getPath()); + assertEquals(localize("/1/2/3/4"), + p.resolveFile("../3/4", new File(localize("/1/2/3"))).getPath()); + assertEquals(localize("/1/2/3/4"), + p.resolveFile("..\\3\\4", new File(localize("/1/2/3"))).getPath()); + assertEquals(localize("/1/2/3/4"), + p.resolveFile("../../5/.././2/./3/6/../4", new File(localize("/1/2/3"))).getPath()); + assertEquals(localize("/1/2/3/4"), + p.resolveFile("..\\../5/..\\./2/./3/6\\../4", new File(localize("/1/2/3"))).getPath()); + + } + + /** + * adapt file separators to local conventions + */ + private String localize(String path) { + return path.replace('\\', File.separatorChar).replace('/', File.separatorChar); } }